我正在开发node.js,并且想要考虑生产和开发环境。我发现在运行node.js服务器时设置NODE_ENV可以完成这项工作。但是,当我尝试在package.json脚本中设置它时,它给出了错误:
NODE_ENV未被识别为内部或外部命令
以下是我的package.json
{
"name": "NODEAPT",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "NODE_ENV=development node ./bin/server",
"qa2": "NODE_ENV=qa2 node ./bin/server",
"prod": "NODE_ENV=production node ./bin/server"
},
"dependencies": {
"body-parser": "~1.15.1",
"cookie-parser": "~1.4.3",
"debug": "~2.2.0",
"express": "~4.13.4",
"fs": "0.0.1-security",
"jade": "~1.11.0",
"morgan": "~1.7.0",
"oracledb": "^1.11.0",
"path": "^0.12.7",
"serve-favicon": "~2.3.0"
}
}
我将节点服务器运行为:npm run qa2
,例如。
我不知道我做错了什么。任何帮助表示赞赏
答案 0 :(得分:33)
由于您使用的是windows operating system.
,因此该命令与您使用的unix系统命令不同。
在Windows中,您必须将脚本修改为。
"scripts": {
"start": " SET NODE_ENV=development & node ./bin/server",
"qa2": "SET NODE_ENV=qa2 & node ./bin/server",
"prod": "SET NODE_ENV=production & node ./bin/server"
},
之后使用SET
,然后使用&
。
然而,建议使用cross-env
npm包来实现跨平台稳定性。
像npm install -S cross-env
"scripts": {
"start": " cross-env NODE_ENV=development & node ./bin/server",
"qa2": "cross-env NODE_ENV=qa2 & node ./bin/server",
"prod": "cross-env NODE_ENV=production & node ./bin/server"
},
答案 1 :(得分:11)
我可以建议跨平台溶出度。这是在cross-env npm包的帮助下完成的。您的脚本部分如下所示:
"scripts": {
"globals" : "npm i -g cross-env",
"start": "cross-env NODE_ENV=development & node ./bin/server",
"qa2": "cross-env NODE_ENV=qa2 & node ./bin/server",
"prod": "cross-env NODE_ENV=production & node ./bin/server"
}
所以你跑了一次:
npm run globals // to install global dependencies
然后你可以在linux和windows(mac?)上自由使用你的脚本。
答案 2 :(得分:1)
如果您在Windows上运行,有时可以使用win-node-env来解决此问题,要使用它,只需运行以下命令。
npm install -g win-node-env