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

$ NODE_ENV=production node myapp/app.js

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


当前回答

如果您正在使用带有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')。

如果您正在使用带有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上使用git bash, set node_env=production&& node whatever.js似乎不起作用。相反,使用本机cmd。然后,使用set node_env=production&& node whatever。Jsworks如预期的那样。

我的用例:

我在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" }

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

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

它允许你这样写:

cross-env NODE_ENV=production my-command

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