强制节点在Windows上使用git bash

Rob*_*opp 5 windows bash node.js

我有一个package.json文件,看起来像:

{
  "name": "APP",
  "version": "3.0.0",
  "private": true,
  "scripts": {
    "start": "node app.js",
    "test": "./test/dbLoad && env db=test test=1 jasmine"
  }
}
Run Code Online (Sandbox Code Playgroud)

当我运行npm测试时,我收到一个错误:

'.' is not recognized as an internal or external command
Run Code Online (Sandbox Code Playgroud)

我猜这是因为节点正在使用Windows cmd.exe.如果我在前面加上命令,该命令工作正常bash.我可以在节点中更改某种配置设置,以便它自动使用bash吗?

jfr*_*roy 9

将 NPM 设置script-shell为指向 Git Bash(注意较新的路径):

npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"

这告诉NPM在您定义的运行脚本package.json(如starttest使用指定的外壳,而不是默认,这在Windows上是)cmd.exe。请参阅https://docs.npmjs.com/misc/config#script-shell


Ami*_*ein 5

是的你可以!

在跑步之前npm run你应该做:

set comspec=your_bash.exe_folder
Run Code Online (Sandbox Code Playgroud)

NPM包,检查comspec环境,并在win32上运行它.默认情况下ComSpec=C:\windows\system32\cmd.exe

有关更多信息,您可以看到NPM的源代码:lifecycle.js(第219行)

if (process.platform === 'win32') {
    sh = process.env.comspec || 'cmd'
    shFlag = '/d /s /c'
    conf.windowsVerbatimArguments = true
  }
Run Code Online (Sandbox Code Playgroud)

您可以使用注册表默认将环境comspec设置为bash.如果您需要任何帮助,请发表评论.

  • 尝试输入set comspec ='C:\ Program Files\Git\bin\bash.exe'并且它没有坚持.还尝试通过控制面板设置ComSpec变量,并且运行`npm test`仍然失败并出现相同的错误. (2认同)
  • 我有同样的问题@RobbyAllsopp.我修复了使用`export"comspec = C:\ Program Files\Git\git-bash.exe"` (2认同)