我有一个看起来像这样的package.json文件:
{
"name": "APP",
"version": "3.0.0",
"private": true,
"scripts": {
"start": "node app.js",
"test": "./test/dbLoad && env db=test test=1 jasmine"
}
}
当我运行npm测试时,出现错误:
'.' is not recognized as an internal or external command
我猜这是因为节点正在使用Windows cmd.exe
。如果我用bash
作为前缀,该命令可以正常工作。我可以在节点中更改某种配置设置,以便它自动使用bash吗?
答案 0 :(得分:5)
是的,你可以!
在运行npm run
之前,你应该这样做:
set comspec=your_bash.exe_folder
NPM包,检查comspec环境,并在win32上运行它。
默认情况下ComSpec=C:\windows\system32\cmd.exe
有关详细信息,您可以查看NPM的源代码:lifecycle.js (Line 219)
if (process.platform === 'win32') { sh = process.env.comspec || 'cmd' shFlag = '/d /s /c' conf.windowsVerbatimArguments = true }
默认情况下,您可以使用注册表将环境comspec设置为bash。如果您需要任何帮助,请发表评论。
答案 1 :(得分:1)
设置NPM的script-shell
指向Git Bash(注意较新的路径):
npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"
这告诉NPM使用指定的外壳程序(而不是默认的外壳程序)运行在package.json
中定义的脚本(例如start
或test
),默认的外壳程序在Windows上是cmd.exe
。参见https://docs.npmjs.com/misc/config#script-shell。