如果I';我正在调用Typescript构建任务?

如果I';我正在调用Typescript构建任务?,typescript,visual-studio-code,Typescript,Visual Studio Code,我在VS代码中编辑Typescript文件,当我通过Shift-Cmd-B调用构建任务时,我得到 `env:node:没有这样的文件或目录' 但是,如果我启动终端并手动键入它使用的相同命令 tsc-p/Users/Mike/Sync/projects/teaching/blendoku/tsconfig.json 它很好用。与build and watch任务一起启动的shell有什么不同?听起来您需要创建一个.env文件,如果您想从VS代码中的命令行运行npm命令,最简单的方法是将它们添加到您

我在VS代码中编辑Typescript文件,当我通过Shift-Cmd-B调用构建任务时,我得到

`env:node:没有这样的文件或目录'

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

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


它很好用。与build and watch任务一起启动的shell有什么不同?

听起来您需要创建一个.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文件。

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

  • 这是非常有益的:
  • 之所以会发生这种情况,是因为没有为任务加载.bashrc,因为它们是非交互式shell。您需要为非交互式shell加载nvm shell增强功能,并使用通过nvm安装的全局软件包,以使VS代码可用

    创建一个名为nvm autoload.sh的新文本文件,并将其放置在/etc/profile.d/文件夹中,以便为所有登录shell运行它,其中包括VS代码的任务shell。将以下内容添加到该文件:

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

  • 如果您在macOS上使用VS代码,您也可以尝试:

    • 您可以尝试在中导出
      path/to/node
      ~/.bash\u配置文件
      ,此线程中的详细信息:

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

    • 如果没有其他办法,此stackoverflow线程可能会帮助您:

  • 如果在窗口上使用VS代码

    • 该问题可能与在运行build命令之前转义/剥离build config中的路径分隔符有关;有关如何修复的更多详细信息和步骤,请检查此项
  • 还值得注意的是,VS代码的TypeScript语言服务与您安装的TypeScript编译器是分开的。这可能是一些差异的原因

  • 还有一些一般性建议是确保
    tsconfig.json
    内容有效,并且指向它的路径没有空格


  • 我不认为VS代码类型脚本“构建任务”与npm有任何关系。这是VS代码知道如何在没有配置的情况下立即执行的任务之一。
    # Enable nvm if available
    if [ -f ~/.nvm/nvm.sh ]; then
      source ~/.nvm/nvm.sh
    fi