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

$ NODE_ENV=production node myapp/app.js

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


当前回答

似乎

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

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

npm run start_windows

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

echo %NODE_ENV%

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

其他回答

我在Visual Studio 2013的Windows 7 64位上使用Node.js的经验是,你需要使用

setx NODE_ENV development

从CMD窗口。并且您必须重新启动Visual Studio才能识别新的值。

set语法仅在设置它的cmd窗口的持续时间内有效。

在Node.js中的简单测试:

console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV);

当使用set时返回'undefined',如果使用setx并重新启动Visual Studio,它将返回'development'。

要在PowerShell中运行应用程序(因为&&是不允许的):

($env:NODE_ENV="production") -and (node myapp/app.js)

请注意,服务器正在做的事情的文本输出被抑制了,我不确定这是否可以修复。(扩展@jsalonen的回答。)

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

npm install --production

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

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

我的用例:

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

如果NODE_ENV或任何其他环境变量没有提供正确的值,则重新启动VS代码。这应该在重启后工作。