我正在 VS Code 中编辑打字稿文件,当我通过 Shift-Cmd-B 调用构建任务时,我得到
'env:节点:没有这样的文件或目录'
但是如果我启动终端并手动键入它正在使用的相同命令,即
tsc -p /Users/Mike/Sync/projects/teaching/blendoku/tsconfig.json
它工作正常。使用生成和监视任务启动的 shell 有何不同?
我研究了这个问题一段时间,这是我的发现:
- 这个StackOverflow答案非常有用:
发生这种情况是因为 .bashrc 没有为任务加载,因为它们是非交互式 shell。还需要为非交互式 shell 加载 nvm shell 增强功能,以便使用通过 nvm 安装的全局包以可用于 VS Code。
创建一个名为nvm-autoload.sh的新文本文件,并将其放在/etc/profile.d/文件夹中,以对所有登录外壳运行它,其中包括 VS Code 的任务外壳。将以下内容添加到该文件:
# Enable nvm if available
if [ -f ~/.nvm/nvm.sh ]; then
source ~/.nvm/nvm.sh
fi
您可能需要注销并重新登录才能使其生效。
如果您在macOS上使用VS Code,您还可以尝试:
您可以尝试导出
path/to/node
~/.bash_profile
,此线程中的详细信息:GitHub 问题您可以尝试将
terminal.integrated.shellArgs.osx
设置为[]
,此线程中的详细信息:GitHub 问题如果没有其他方法,这个堆栈溢出线程可能会帮助你: 堆栈溢出问题
如果您在Windows上使用 VS Code:
- 该问题可能与构建配置中的路径分隔符有关,在运行构建命令之前被转义/剥离;有关更多详细信息和如何修复的步骤,请查看此 StackOverflow 答案
还值得注意的是,VS Code 的 TypeScript 语言服务与您安装的 TypeScript 编译器是分开的。这可能是一些差异的原因。链接
此外,一些一般建议是确保
tsconfig.json
内容有效,并且指向它的路径没有空格。
对我来说听起来像你需要制作一个 .env 文件,如果你想从 VS 代码中的命令行运行 npm 命令,最简单的方法是将它们添加到添加节点时在项目中创建的 package.json 中。
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"start": "pm2-dev app.js" // this has no meaning for your issue just an
example
},
既然你正在尝试构建
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"start": "pm2-dev app.js",
"build": "your program to run here"
},
然后你可以在VS终端上运行你的构建npm run build
,但是,如上所述,从你的错误来看,听起来你需要一个.env文件。