如何在Windows上设置NODE_ENV = production?

时间:2012-02-12 15:09:15

标签: node.js express

在Ubuntu中它非常简单;我可以使用以下命令运行应用程序:

$ NODE_ENV=production node myapp/app.js

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

20 个答案:

答案 0 :(得分:409)

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

$env:NODE_ENV="production"

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

set NODE_ENV=production

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

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

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

答案 1 :(得分:172)

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

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

它允许你写这样的东西:

import java.awt.Dimension;
import javax.swing.JApplet;
import javax.swing.JFrame;

public class FrameView {
    JFrame frame;
    public void createFrame()
    {
        frame = new JFrame("CLOCK");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        JApplet applet = new ClockComponent();
        frame.getContentPane().add(applet);
        frame.pack();
        frame.setSize(new Dimension(400, 400));
        frame.setVisible(true);
    }
}

这很方便!没有Windows或Unix特定命令!

答案 2 :(得分:158)

在PowerShell中:

$env:NODE_ENV="production"

答案 3 :(得分:75)

如果您可以在与Windows上启动Node.js的调用相同的行上设置参数,那将是理想的选择。请仔细查看以下内容,并按照说明运行:

您有以下两种选择:

  1. 在命令行:

    set NODE_ENV=production&&npm start
    

    set NODE_ENV=production&&node index.js
    
  2. 运行" npm运行start_windows"在命令行中,package.json文件配置如下

    //package.json
    
    "scripts": {
      "start": "node index.js"
      "start_windows": "set NODE_ENV=production&&node index.js"
    }
    
  3. 它在Windows上运行的技巧是你需要删除"&&"之前和之后的空格。

答案 4 :(得分:28)

您可以使用

npm run env NODE_ENV=production

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

来自npm run-script documentation

  

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

答案 5 :(得分:13)

如果您将Visual Studio与NTVS一起使用,则可以在项目属性页面上设置环境变量:

Visual Studio NTVS Project Properties

正如您所看到的,配置和平台下拉列表已禁用(我没有看到为什么会这样做太多),但如果您按如下方式编辑.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>

'Debug / Release'下拉列表将控制在启动Node.js之前如何设置变量。

答案 6 :(得分:8)

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

setx NODE_ENV development
从cmd窗口

。并且您必须重新启动Visual Studio才能识别新值。

设置语法仅持续设置它的cmd窗口的持续时间。

Node.js中的简单测试:

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

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

答案 7 :(得分:7)

我编写了一个模块win-node-env,您可以像在* nix中一样使用该模块运行命令。

NODE_ENV=production node myapp/app.js

它通过创建一个NODE_ENV.cmd来工作,该NODE_ENV设置npm install -g win-node-env 环境变量,并使用其余命令及其参数生成一个子进程。

只需全局安装它,然后运行npm脚本命令,它应该会自动使它们工作。

'end test'

答案 8 :(得分:6)

这是非命令行方法:

在Windows 7或10中,在开始菜单搜索框中键入environment,然后选择编辑系统环境变量。

或者,导航到“控制面板”\“系统”和“安全\系统”,然后单击“高级系统设置”

这应打开“系统属性”对话框,并选中“高级”选项卡。在底部,您将看到Environment Variables ...按钮。点击这个。

System Dialog Box

将打开“环境变量”对话框。

Environment Variable Dialog Box

在底部的System variables下,选择New ...这将打开New System Variable对话框。

enter image description here

输入变量名称和值,然后单击“确定”。

您需要关闭所有cmd提示并重新启动服务器,以便新变量可供process.env使用。如果仍然没有显示,请重新启动计算机。

答案 9 :(得分:6)

只是为了澄清,以及其他任何可能会把头发拉开的人......

如果您在Windows上使用 git bash ,则set node_env=production&& node whatever.js 似乎无效。相反,使用本机cmd。然后,使用set node_env=production&& node whatever.js按预期工作。

我的用例:

我在Windows上开发,因为我的工作流程很多更快,但我需要确保我的应用程序的特定于开发的中间件没有在生产环境中启动。

答案 10 :(得分:4)

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

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

请注意,服务器正在执行的操作的文本输出被抑制,我不确定这是否可修复。 (扩展@ jsalonen的答案。)

答案 11 :(得分:3)

第一个Powershell类型

$env:NODE_ENV="production"

然后输入

node fileName.js

它将完美地显示所有输出。

答案 12 :(得分:2)

对于多个环境变量,.env文件更方便:

# .env.example, committed to repo
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
# .env, private, .gitignore it
DB_HOST=real-hostname.example.com
DB_USER=real-user-name
DB_PASS=REAL_PASSWORD

使用dotenv-safe很容易:

  1. 使用npm install --save dotenv-safe安装。
  2. 将其包含在您的代码中(最好在index.js的开头)并直接与process.env command一起使用:
  3. require('dotenv').load()
    console.log(process.env.DB_HOST)   
    

    不要忘记ignore the .env file in your VCS

    如果.env.example中的“已定义”变量未设置为环境变量或.env,则程序会快速失败。

答案 13 :(得分:1)

如果你使用的是 vs code 终端,你必须使用这个命令

$env:NODE_ENV="production"

答案 14 :(得分:0)

这不会设置变量,但在许多情况下它很有用。我不建议将它用于制作,但是如果你在npm玩游戏应该没问题。

npm install --production

答案 15 :(得分:0)

如果您使用的是GITBASH终端 "set NODE_ENV=production" 将无法正常工作,您能做的是输入 “导出NODE_ENV=production"

答案 16 :(得分:0)

我使用npm脚本来运行没有“ &&”的gulp任务

NODE_ENV =测试案例npm运行seed-db

答案 17 :(得分:0)

如果NODE_ENV或任何其他环境变量未提供正确的值,请重新启动VS代码。重新启动后应该可以使用。

答案 18 :(得分:0)

对于 Windows

set NODE_ENV=development && react-scripts start

对于 Ubuntu、Linux、MacOs

NODE_ENV=development react-scripts start

答案 19 :(得分:-1)

似乎

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

对我不起作用。我目前正在Windows计算机上尝试此操作。当我点击时:

npm run start_windows

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

echo %NODE_ENV%

一无所有,这意味着它不存在,而且根本没有设置...