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

$ NODE_ENV=production node myapp/app.js

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


当前回答

如果你能在调用启动Windows上的Node.js时在同一行设置参数,那就太理想了。仔细看下面的内容,并按照上面说的那样运行:

你有两个选择:

在命令行: set NODE_ENV=production&&npm start 或 set NODE_ENV=production&&node index.js 在Windows上工作的技巧是你需要删除“&&”前后的空白。配置您的包。Json文件与start_windows(见下文)下面。然后在命令行执行“npm Run start_windows”。 / / package.json "脚本":{ "start": "node index.js" "start_windows": "set NODE_ENV=production&&node index.js" }

其他回答

我在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'。

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

npm install --production

如果您正在使用带有NTVS的Visual Studio,您可以在项目属性页面上设置环境变量:

正如你所看到的,Configuration和Platform下拉菜单被禁用了(我还没有深入研究为什么会这样),但是如果你编辑你的.njsproj文件,如下所示:

  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <DebugSymbols>true</DebugSymbols>
    <Environment>NODE_ENV=development</Environment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <DebugSymbols>true</DebugSymbols>
    <Environment>NODE_ENV=production</Environment>
  </PropertyGroup>

然后,“调试/发布”下拉菜单将控制在启动Node.js之前如何设置变量。

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

我刚刚发现了一个很好的Node.js包,它可以用独特的语法定义环境变量,跨平台。

https://www.npmjs.com/package/cross-env

它允许你这样写:

cross-env NODE_ENV=production my-command

这非常方便!不再有Windows或Unix特定的命令!