1

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

在我的 package.json 文件中,在“脚本”部分下,我有一个“开始”条目。它看起来像这样:

"scripts": {
    "start": "APPLICATION_ENV=development nodemon app.js"
}

在 Mac 终端上打字npm start工作正常,nodemon 按预期使用正确的 APPLICATION_ENV 变量运行应用程序。当我在 Windows 环境中尝试相同的操作时,我收到以下错误:

“'APPLICATION_ENV' 不是内部或外部命令、可运行程序或批处理文件。”

我已经尝试过 git-bash shell 和正常的 Win CMD 提示符,同样的处理。

我觉得这很奇怪,因为直接在终端中输入命令(而不是通过 npm start 通过 package.json 脚本)工作正常。

有没有其他人看到这个并找到解决方案?谢谢!!

4

2 回答 2

3

对于脚本中环境变量的跨平台使用,请安装并使用cross-env

"scripts": {
    "start": "cross-env APPLICATION_ENV=development nodemon app.js"
}

该问题在提供给的链接中得到了很好的解释cross-env。上面写着:

当您使用这样设置环境变量时,大多数 Windows 命令提示符都会阻塞NODE_ENV=production。(Windows 上的 Bash 例外,它使用本机 Bash。)同样,Windows 和 POSIX 命令如何利用环境变量也有所不同。在 POSIX 中,您使用:$ENV_VAR,在 Windows 上,您使用%ENV_VAR%.

于 2017-05-25T09:21:38.033 回答
0

我最终根据这里的第二个答案使用了dotenv包:

Node.js:设置环境变量

我喜欢这个,因为它允许我设置环境变量,而无需在我的 npm 脚本行中注入额外的文本。相反,他们使用的是 .env 文件(应该放在每个环境中并从版本控制中省略)。

于 2017-05-25T17:50:04.207 回答