如果我正在调用 Typescript 构建任务,为啥 VS Code 集成终端不起作用?
Posted
技术标签:
【中文标题】如果我正在调用 Typescript 构建任务,为啥 VS Code 集成终端不起作用?【英文标题】:Why does the VS Code integrated terminal not work if I'm invoking a Typescript build task?如果我正在调用 Typescript 构建任务,为什么 VS Code 集成终端不起作用? 【发布时间】:2020-02-16 11:23:53 【问题描述】:我在 VS Code 中编辑 Typescript 文件,当我通过 Shift-Cmd-B 调用构建任务时,我得到了
`env: node: 没有这样的文件或目录'
但如果我启动终端并手动键入它正在使用的相同命令,即
tsc -p /Users/Mike/Sync/projects/teaching/blendoku/tsconfig.json
它工作正常。与 build 和 watch 任务一起启动的 shell 有什么不同?
【问题讨论】:
【参考方案1】:听起来你需要创建一个 .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 文件。
【讨论】:
我不认为 VS Code Typescript “构建任务”与 npm 有任何关系。这是 VS Code 知道如何在没有配置的情况下直接完成的任务之一。【参考方案2】:我研究了这个问题一段时间,发现如下:
-
这个*** answer 信息量很大:
发生这种情况是因为没有为任务加载 .bashrc,因为它们是非交互式 shell。您还需要为非交互式 shell 加载 nvm shell 增强功能,以便使用通过 nvm 安装的全局包以供 VS Code 使用。
创建一个名为 nvm-autoload.sh 的新文本文件,并将其放在 /etc/profile.d/ 文件夹中,以便为所有登录 shell 运行它,其中包括 VS Code 的任务 shell。将以下内容添加到该文件中:
# Enable nvm if available
if [ -f ~/.nvm/nvm.sh ]; then
source ~/.nvm/nvm.sh
fi
您可能需要注销并重新登录才能生效。
如果你在 macOS 上使用 VS Code,你也可以试试:
您可以尝试将path/to/node
导出到
~/.bash_profile
,此线程中的详细信息:GitHub issue
您可以尝试将terminal.integrated.shellArgs.osx
设置为[]
,详情见此帖:GitHub issue
如果没有其他方法,这个 *** 线程可能会对您有所帮助:*** question
如果您在 Windows 上使用 VS Code:
此问题可能与构建配置中的路径分隔符在运行构建命令之前被转义/剥离有关;有关如何修复的更多详细信息和步骤,请查看此*** answer另外值得注意的是,VS Code 的 TypeScript 语言服务与您安装的 TypeScript 编译器是分开的。这可能是一些差异的原因。 Link
还有一些一般性建议是确保 tsconfig.json
内容有效,并且指向它的路径没有空格。
【讨论】:
以上是关于如果我正在调用 Typescript 构建任务,为啥 VS Code 集成终端不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
在 VS Code 和 TypeScript 中调试 Azure DevOps 自定义任务时如何设置输入变量
Azure可以编译TypeScript并执行Gulp任务吗?
带有适用于 Linux 的 Windows 子系统的 Windows 10 上的 VSCode 中的 Typescript 构建任务