如果我调用 Typescript 构建任务,为什么 VS Code 集成终端不起作用?



我正在 VS Code 中编辑打字稿文件,当我通过 Shift-Cmd-B 调用构建任务时,我得到

'env:节点:没有这样的文件或目录'

但是如果我启动终端并手动键入它正在使用的相同命令,即

tsc -p /Users/Mike/Sync/projects/teaching/blendoku/tsconfig.json

它工作正常。使用生成和监视任务启动的 shell 有何不同?

我研究了这个问题一段时间,这是我的发现:

  1. 这个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

您可能需要注销并重新登录才能使其生效。

  1. 如果您在macOS上使用VS Code,您还可以尝试:

    • 您可以尝试导出path/to/node~/.bash_profile,此线程中的详细信息:GitHub 问题

    • 您可以尝试将terminal.integrated.shellArgs.osx设置为[],此线程中的详细信息:GitHub 问题

    • 如果没有其他方法,这个堆栈溢出线程可能会帮助你: 堆栈溢出问题

  2. 如果您在Windows上使用 VS Code:

    • 该问题可能与构建配置中的路径分隔符有关,在运行构建命令之前被转义/剥离;有关更多详细信息和如何修复的步骤,请查看此 StackOverflow 答案
  3. 还值得注意的是,VS Code 的 TypeScript 语言服务与您安装的 TypeScript 编译器是分开的。这可能是一些差异的原因。链接

  4. 此外,一些一般建议是确保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文件。

相关内容

  • 没有找到相关文章

最新更新