我注意到这种奇怪的行为并不是什么大不了的事,但却让我感到害怕。
在我的package.json文件中,在"脚本"部分,我有一个"开始"条目。它看起来像这样:
if(houseType=="Lotus")
在Mac终端上键入"scripts": {
"start": "APPLICATION_ENV=development nodemon app.js"
}
工作正常,nodemon按预期运行具有正确APPLICATION_ENV变量的应用程序。当我在Windows环境中尝试相同时,我收到以下错误:
"' APPLICATION_ENV'不被识别为内部或外部命令,可操作程序或批处理文件。"
我已经尝试过git-bash shell和正常的Win CMD提示,同样的交易。
我发现这很奇怪,因为直接在终端输入命令(不通过npm start通过package.json脚本)工作正常。
还有其他人看过这个并找到了解决方案吗?谢谢!!
答案 0 :(得分:1)
要在脚本中跨平台使用环境变量,请安装并使用cross-env。
"scripts": {
"start": "cross-env APPLICATION_ENV=development nodemon app.js"
}
在提供给cross-env
的链接中解释了该问题。它写着:
当您使用
NODE_ENV=production
设置环境变量时,大多数Windows命令提示都会阻塞。 (例外是Windows上的Bash,它使用本机Bash。)同样,Windows和POSIX命令如何利用环境变量也有所不同。使用POSIX,您可以使用:$ENV_VAR
,在Windows上使用%ENV_VAR%
。
答案 1 :(得分:0)
我最终使用基于第二个答案的dotenv包:
Node.js: Setting Environment Variables
我喜欢这个,因为它允许我设置环境变量,而不必在我的npm脚本行中注入额外的文本。相反,他们使用的是.env文件(应放在每个环境中并从版本控制中省略)。