Windows上的节点环境变量

时间:2017-05-24 16:55:44

标签: node.js npm package.json npm-scripts

我注意到这种奇怪的行为并不是什么大不了的事,但却让我感到害怕。

在我的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脚本)工作正常。

还有其他人看过这个并找到了解决方案吗?谢谢!!

2 个答案:

答案 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文件(应放在每个环境中并从版本控制中省略)。