在Ubuntu中这很简单;我可以运行应用程序使用:

$ NODE_ENV=production node myapp/app.js

但是,这在Windows上不起作用。是否有可以设置属性的配置文件?


当前回答

只是为了澄清一下,对于那些可能会揪着头发的人来说……

如果你在Windows上使用git bash, set node_env=production&& node whatever.js似乎不起作用。相反,使用本机cmd。然后,使用set node_env=production&& node whatever。Jsworks如预期的那样。

我的用例:

我在Windows上开发,因为我的工作流程要快得多,但我需要确保我的应用程序的特定于开发的中间件不会在生产环境中触发。

其他回答

你可以使用

npm run env NODE_ENV=production

这可能是最好的方法,因为它在Windows和Unix上都是兼容的。

来自npm run-script文档:

env脚本是一个特殊的内置命令,可用于列出脚本在运行时可用的环境变量。如果在包中定义了“env”命令,它将优先于内置命令。

当前版本的Windows使用Powershell作为默认shell,因此使用:

$env:NODE_ENV="production"

请看下面@jsalonen的回答。如果您在CMD(不再维护),使用

set NODE_ENV=production

这应该在您打算运行Node.js应用程序的命令提示符中执行。

上面的代码行将为执行命令的命令提示符设置环境变量NODE_ENV。

要全局设置环境变量,使它们在单个命令提示符之外持续存在,您可以在控制面板中的系统中找到该工具(或在开始菜单中的搜索框中键入'environment')。

在Windows 10中,我使用$env:NODE_ENV="Production"

这在我的vscode终端上工作。但如果你的服务器正在监听,首先需要停止并设置你的env变量,然后重新启动应用程序。这种方法对我很有效。

似乎

{
   "start_windows": "set NODE_ENV=test"
}

对我没用。我目前正在我的Windows电脑上尝试这个功能。当我点击:

npm run start_windows

它会在控制台上执行,没有错误,但是当我尝试回显时

echo %NODE_ENV%

什么都没有出来,这意味着它不存在,它根本就没有设置……

这不会设置一个变量,但在很多情况下是有用的。我不建议在生产环境中使用这个方法,但是如果你正在使用npm,它应该是可以的。

npm install --production