在Ubuntu中这很简单;我可以运行应用程序使用:
$ NODE_ENV=production node myapp/app.js
但是,这在Windows上不起作用。是否有可以设置属性的配置文件?
在Ubuntu中这很简单;我可以运行应用程序使用:
$ NODE_ENV=production node myapp/app.js
但是,这在Windows上不起作用。是否有可以设置属性的配置文件?
当前回答
我在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的回答。)
如果您正在使用带有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之前如何设置变量。
当前版本的Windows使用Powershell作为默认shell,因此使用:
$env:NODE_ENV="production"
请看下面@jsalonen的回答。如果您在CMD(不再维护),使用
set NODE_ENV=production
这应该在您打算运行Node.js应用程序的命令提示符中执行。
上面的代码行将为执行命令的命令提示符设置环境变量NODE_ENV。
要全局设置环境变量,使它们在单个命令提示符之外持续存在,您可以在控制面板中的系统中找到该工具(或在开始菜单中的搜索框中键入'environment')。
下面是非命令行方法:
在Windows 7和Windows 10操作系统中,在开始菜单搜索框中输入“environment”,选择“编辑系统环境变量”。
或者,导航到控制面板\系统和安全\系统,然后单击高级系统设置
这将打开“系统属性”对话框,选中“高级”选项卡。在底部,你会看到一个环境变量…按钮。点击这个。
将打开“环境变量”对话框。
在底部,在系统变量下,选择New…这将打开“新建系统变量”对话框。
输入变量名和值,然后单击OK。
您需要关闭所有cmd提示并重新启动服务器,以便process.env可以使用新变量。如果仍然没有显示,请重新启动计算机。
我刚刚发现了一个很好的Node.js包,它可以用独特的语法定义环境变量,跨平台。
https://www.npmjs.com/package/cross-env
它允许你这样写:
cross-env NODE_ENV=production my-command
这非常方便!不再有Windows或Unix特定的命令!