根据docs,它应该可以工作。当我按Ctrl-Shift-B组合键时,确实得到npm: build
,如果运行,则在终端中得到npm command not found
。但是,手动运行npm run build
是可行的。
我正在使用nvm
。一些相关的输出:
~ which node
/home/gt/.nvm/versions/node/v10.15.3/bin/node
~ which npm
/home/gt/.nvm/versions/node/v10.15.3/bin/npm
~ echo $NODE_PATH
/home/gt/.nvm/versions/node/v10.15.3/bin/node
这可能是什么原因?以及如何解决?
答案 0 :(得分:1)
该问题可能是因为npm不在VS Code的路径中(可能是/usr/bin
)。但是,您可以创建自定义生成任务并指定路径。在.vscode
目录中,创建一个tasks.json
文件。将内容放在文件下面。
{
"version": "2.0.0",
"tasks": [
{
"label": "npm:build",
"type": "shell",
"group": { "kind": "build", "isDefault": true },
"command": "/home/gt/.nvm/versions/node/v10.15.3/bin/npm run build"
}
]
}
组设置使该任务成为VS Code中的默认任务和构建样式任务。因此,它使它可以从ctrl+shift+b
启动。
答案 1 :(得分:1)
自我回答,因为我终于找到了我需要做的两件事:
按照one answer中的说明创建task.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "npm:build",
"type": "shell",
"group": { "kind": "build", "isDefault": true },
"command": "/home/gt/.nvm/versions/node/v10.15.3/bin/npm run build"
}
]
}
此后,我又遇到另一个错误:"/usr/bin/env: node: No such file or directory"
然后我发现了这个github thread,所以我根据建议创建了符号链接:
$ sudo ln -s /home/gt/.nvm/versions/node/v10.15.3/bin/node /usr/bin/node
和ctrl+shift+b
快捷方式现在可以使用。请注意,您所用的源参数可以从which node
中获取。
答案 2 :(得分:1)
我正在使用nvm并编写了一个包装器脚本,该脚本从.nvmrc
中读取节点版本。这避免了在多个位置对特定节点版本进行硬编码。使用settings.json
设置为terminal.integrated.automationShell.<os>
中的所有shell命令配置了包装脚本。
#!/bin/bash
set -e
if [[ "$2" == nvm* ]]; then
export NODE_VERSION=v$(cat .nvmrc)
if [ -z "$NODE_VERSION" ]; then
echo "$(pwd)/.nvmrc does not exist or is empty"
exit 1
fi
CLEAN_CMD=$(echo $2 | sed -e 's/nvm/npm/g')
/bin/bash -c "~/.nvm/nvm-exec $CLEAN_CMD"
else
/bin/bash -c $@
fi
然后,任务可以使用nvm <command>
命令使用正确的节点版本:
{
"type": "shell",
"command": "nvm run compile",
"label": "npm-compile",
"problemMatcher": "$tsc",
"isBackground": false,
"presentation": {
"reveal": "always"
},
"group": {
"kind": "build",
"isDefault": true
}
}
还有一个要点提供了更多信息:https://gist.github.com/fvclaus/540c08921ba884fef959053c4f974bfc
答案 3 :(得分:1)
我们通过获取设置了NVM的文件然后运行npm命令来解决了这个问题。
示例:
"command": "source scripts/nvm && npm run develop",
# ./scripts/nvm
# This is for users who don't have a global Node.js installation but instead
# rely on NVM. This file is sourced when running build tasks in non-login
# shells.
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
或者,您可以在此处获取〜/ .bash_profile(或任何其他文件)。我们认为这比硬编码nvm的npm路径更好。
答案 4 :(得分:0)
我认为您不在正确的目录中。
尝试以下方法。
从任何组件打开任何ts / html文件,执行相同操作 (Ctrl + Shift + B)。
可能会奏效,对我来说也奏效。
仍然遇到相同的问题,请共享快照。
答案 5 :(得分:0)
尝试文件->打开文件夹,打开您的npm项目文件夹并从此处运行构建命令。如果失败,则可能需要更新task.json以使其类似于
{
"version": "0.0.1",
"tasks": [
{
"label": "npm:build",
"type": "shell",
"group": { "isDefault": true,"kind": "build", },
"command": "npm run build"
}
]
}