#javascript #node.js #typescript #visual-studio-code #vscode-extensions
#javascript #node.js #typescript #visual-studio-code #vscode-расширения
Вопрос:
Я пытаюсь создать VS Code
расширение. При разработке он работает нормально, однако, когда я создаю пакет и устанавливаю его VS Code
, происходит сбой со следующей ошибкой:
ERR Cannot find module 'request': Error: Cannot find module 'request'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:602:15)
at Function.Module._load (internal/modules/cjs/loader.js:528:25)
at Function.t._load (c:UsersUSERAppDataLocalProgramsMicrosoft VS CoderesourcesappoutvsworkbenchservicesextensionsnodeextensionHostProcess.js:729:537)
at Function.t.getExtensionPathIndex.then.a._load (c:UsersUSERAppDataLocalProgramsMicrosoft VS CoderesourcesappoutvsworkbenchservicesextensionsnodeextensionHostProcess.js:691:639)
at Function.t.getExtensionPathIndex.then.r._load (c:UsersUSERAppDataLocalProgramsMicrosoft VS CoderesourcesappoutvsworkbenchservicesextensionsnodeextensionHostProcess.js:655:197)
at Module.require (internal/modules/cjs/loader.js:658:17)
at n (c:UsersUSERAppDataLocalProgramsMicrosoft VS Coderesourcesappoutvsloader.js:15:874)
at openBambooPlanUrlInBrowser.GIT.getGitBranchFromFileName (C:UsersUSER.vscodeextensionsdUSER.markdown-table-of-contents-0.0.1outextension.js:397:41)
at getGitBranchFromFileName.exec (C:UsersUSER.vscodeextensionsdUSER.markdown-table-of-contents-0.0.1outextension.js:383:17)
at ChildProcess.exithandler (child_process.js:294:7)
at ChildProcess.emit (events.js:182:13)
at maybeClose (internal/child_process.js:961:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:248:5)
мой код:
async openBambooPlanUrlInBrowser(fileName: string) {
new GIT().getGitBranchFromFileName(fileName, (branch: string) => {
var config: any = vscode.workspace.getConfiguration('markdown-table-of-contents').get('bitbucketRepositories');
for (var setting of config) {
if (fileName.toLowerCase().startsWith(setting.folder.toLowerCase())) {
branch = branch.replace('/', '-');
let bambooHost = vscode.workspace.getConfiguration('markdown-table-of-contents').get('atlassianBambooHost');
const request = require('request');
request(
{
url: `${bambooHost}/rest/api/latest/plan/${setting.bambooPlanKey}/branch/${branch}.json`,
headers: {
"Authorization": 'Basic ' vscode.workspace.getConfiguration('markdown-table-of-contents').get('atlassianAuthHash')
}
},
(error: string, response: string, body: string) => {
let planKey = JSON.parse(body).key;
vscode.env.openExternal(vscode.Uri.parse(`${bambooHost}/browse/${planKey}`));
}
);
}
}
});
}
зависимости от package.json
"dependencies": {
"child_process": "^1.0.2",
"clipboardy": "^1.2.3",
"fs": "0.0.1-security",
"iconv-lite": "^0.4.24",
"path": "^0.12.7",
"request": "^2.88.0",
"util": "^0.11.1",
"xml2js": "^0.4.19",
"xmldom": "^0.1.27"
}
корневая папка:
.gitignore
.vscode
.vscodeignore
depl.bat
markdown-table-of-contents-0.0.1.vsix
node_modules
out
package-lock.json
package.json
src
tsconfig.json
tslint.json
Комментарии:
1. Проверьте файл package.json в корневом каталоге.. убедитесь, что он указан в разделе зависимости.
2. он указан там
3. Это явно означает, что ваши зависимости не были установлены VS Code при установке расширения. В основном это происходит, когда ваш файл package.json отсутствует в каталоге, в котором установлено ваше расширение. Если файл уже существует, вы должны проверить, правильно ли вы опубликовали свой код.
4. Вы когда-нибудь находили решение этой проблемы? Я сам сталкиваюсь с подобной проблемой
5. Ха-ха, вот почему вам нужно ответить на свой собственный вопрос 🙂
Ответ №1:
Для меня решением было запустить npm install <package_name>
(обратите внимание, что нет «-g») из корневой папки кода расширения. Vscode помещает расширение в свою [папку расширений] [1], перейдите туда, чтобы сделать npm install
.
Пример: для linux / mac
cd ~/.vscode/extensions
cd your.extension
npm install
Это также автоматически добавило его в devDependencies, и с этого момента расширение работало отлично.
Комментарии:
1. cd ~/.vscode-oss /extensions работал для меня
2. Или вы можете включить node_modules в свой vsix в первую очередь
3. Как включить все node_modules? В настоящее время у меня возникла эта проблема с @xmldom / xmldom. Он находится в папке и устанавливается без параметров, но по какой-то причине при установке этот пакет отсутствует, и VSCode не может выполнить мое расширение
4. Если его нет в списке .vscodeignore и он находится в вашем корневом каталоге, он будет включен в пакет расширений