在 vscode 的 NPM SCRIPTS 面板点击执行后脚本失败

文章目录

背景

如果你的项目的 package.json 配置了 script 字段,那么在 VSCode - Explorer 最下面一般可以看到一个收起的 NPM SCRIPTS 面板,这里会列出 script 字段中配置的所有 npm 命令。

hover到每个脚本上,会出现一个 debug 按钮,一个 run 按钮。点击即可调试或者执行 npm 脚本。

但是如果你配置过 vscode 的默认终端,那么直接点击 run 时会执行失败。

比如我就是将 vscode 终端自定义成了本地的 git-bash

json 复制代码
// VSCode/User/settings.json

"terminal.integrated.profiles.windows": {
  "git-bash": {
    "path": "D:\\Dev\\Git\\PortableGit\\bin\\sh.exe",
  },
},
"terminal.integrated.defaultProfile.windows": "git-bash",

报错

点击 run 后,就有以下报错:

bash 复制代码
 *  Executing task: npm run test 

/d: /d: Is a directory

 *  The terminal process "D:\Dev\Git\PortableGit\bin\sh.exe /d /c npm run test" terminated with exit code: 126. 
 *  Terminal will be reused by tasks, press any key to close it. 

这不是 npm test 脚本问题,而是 NPM Scripts 面板触发任务时用了错误的 shell 组合。

日志里是:

  • 可执行程序:sh.exe
  • 参数:/d /c(这是 cmd.exe 的参数)

所以才会出现 /d: Is a directory

解决办法1

把上面提到的自定义默认终端设置给删掉,使其恢复成默认的配置(应该是 cmd)。

或者把上面的配置改成 powershell 或者 cmd 应该也行。

解决办法2

如果你想和我一样保留上面自定义默认终端配置为 git-bash,那么手动配置"自动执行脚本"所使用的终端为兼容的终端(比如 cmd 或者 powershell):

json 复制代码
// VSCode/User/settings.json

"terminal.integrated.automationProfile.windows": {
  "path": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
},

如果修改并报存后不起作用,可以重启 vscode,或者 Ctrl + Shift + P 执行 Developer: Reload Window 命令重新加载vscode窗口,然后试着重新点击 run 按钮。此时应该是能正常执行的。

相关推荐
X1A0RAN1 天前
解决Pycharm中部分文件或文件夹被隐藏不展示问题
ide·python·pycharm
wh_xia_jun1 天前
用pom 的test 配置 与 jacoco
java·ide·intellij-idea
弹简特1 天前
【Vue3速成】01-npm+vue初体验+vite构建vue工程化
vue.js·arcgis·npm
DogDaoDao1 天前
Windows 下 Git 报错:`touch` 无法识别 —— 原因分析与 7 种解决方案(从入门到精通)
windows·git·程序员·npm·powershell·cmd·touch
zhaqonianzhu1 天前
Qoder CN 插件停更与迁移指南:从 VS Code 到通义灵码 IDE
ide·vscode
数智工坊1 天前
PyCharm 运行 Python 脚本总自动进 Test 模式?附 RT-DETRv2 依赖缺失终极排坑
开发语言·ide·人工智能·python·pycharm
00后程序员张1 天前
Windows 下怎么生成 AppStoreInfo.plist?不依赖 Xcode 的方法
ide·macos·ios·小程序·uni-app·iphone·xcode
BU摆烂会噶1 天前
【LangGraph】House_Agent 实战(一):架构与环境配置
人工智能·vscode·python·架构·langchain·人机交互
天若有情6731 天前
轻量级状态事件总线 eventbusx-js 开源使用教程
开发语言·javascript·npm·开源·事件·事件总线
IceSugarJJ1 天前
Windows下VSCode+ WSL项目启动流程
linux·windows·vscode·ubuntu·wsl