418

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

$ NODE_ENV=production node myapp/app.js

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

4

22 回答 22

606

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

$env:NODE_ENV="production"

根据@jsalonen 下面的回答。如果您在 CMD 中(不再维护),请使用

set NODE_ENV=production

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

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

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

于 2012-02-12T15:54:54.983 回答
305

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

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

它允许你写这样的东西:

cross-env NODE_ENV=production my-command

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

于 2016-02-10T06:12:53.137 回答
175

在 PowerShell 中:

$env:NODE_ENV="production"
于 2012-10-08T21:08:49.367 回答
149

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

您有以下两种选择:

  1. 在命令行:

    set NODE_ENV=production&&npm start
    

    或者

    set NODE_ENV=production&&node index.js
    
  2. 它在 Windows 上工作的技巧是您需要删除“&&”前后的空格。使用下面的 start_windows(见下文)配置您的 package.json 文件。然后在命令行运行“npm run start_windows”。

    //package.json
    
    "scripts": {
      "start": "node index.js"
      "start_windows": "set NODE_ENV=production&&node index.js"
    }
    
于 2015-05-16T05:57:51.367 回答
37

您可以使用

npm run env NODE_ENV=production

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

npm 运行脚本文档

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

于 2015-09-09T13:41:14.420 回答
23

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

NODE_ENV=production node myapp/app.js

它通过创建一个NODE_ENV.cmd设置NODE_ENV环境变量并使用命令的其余部分及其参数生成一个子进程来工作。

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

npm install -g win-node-env
于 2018-09-12T04:28:27.217 回答
14

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

Visual Studio NTVS 项目属性

如您所见,配置和平台下拉菜单被禁用(我没有深入研究为什么会这样),但是如果您.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 之前如何设置变量。

于 2015-10-19T16:51:18.383 回答
13

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

setx NODE_ENV development

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

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

Node.js 中的简单测试:

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

使用 set 时返回“未定义”,如果使用 setx 并重新启动 Visual Studio,它将返回“开发”。

于 2014-06-02T13:41:32.770 回答
11

这是非命令行方法:

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

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

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

系统对话框

环境变量对话框将打开。

环境变量对话框

在底部的系统变量下,选择新建...这将打开新建系统变量对话框。

在此处输入图像描述

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

您将需要关闭所有 cmd 提示并重新启动服务器,以便新变量可用于 process.env。如果仍然没有出现,请重新启动您的机器。

于 2018-04-03T03:16:33.137 回答
9

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

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

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

于 2015-07-21T15:46:51.767 回答
9

只是为了澄清,对于其他可能会拔头发的人......

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

我的用例:

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

于 2017-01-09T14:26:22.120 回答
8

首先是powershell类型

$env:NODE_ENV="production"

然后输入

node fileName.js

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

于 2018-08-24T05:34:53.990 回答
5

如果您使用的是 vs code 终端,则必须使用此命令

$env:NODE_ENV="production"
于 2021-01-05T07:12:46.187 回答
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-dev dotenv-safe
  2. 将其包含在您的代码中(最好在 开头index.js)并直接与process.env命令一起使用:
require('dotenv').load()
console.log(process.env.DB_HOST)   

不要忘记忽略.envVCS 中的文件

.env.example如果变量“定义” in未设置为环境变量或 in ,您的程序将快速失败.env

于 2017-05-09T09:28:07.240 回答
2

如果您使用 GITBASH 终端 "set NODE_ENV=production" 无法正常工作,您可以输入“export”NODE_ENV=production"

于 2018-08-15T15:32:32.330 回答
2

对于 Windows

设置 NODE_ENV=development && react-scripts start

适用于 Ubuntu、Linux、macOS

NODE_ENV=开发反应脚本开始

于 2021-07-09T11:00:54.203 回答
1

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

于 2020-01-07T20:20:38.973 回答
0

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

npm install --production
于 2018-05-06T17:56:16.077 回答
0

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

NODE_ENV=testcases npm 运行种子数据库

于 2019-06-21T14:38:09.100 回答
0

最后,我能看到的最好的方法如下。

"set-env-qa": "npm run env APP_ENV=qa",
"start:qa": "npm run set-env-qa && react-native start",

这将确保我们为程序获得正确的环境设置。用你想要的下一个命令替换 react-native-start 。

于 2022-01-01T11:44:04.777 回答
-1
set NODE_ENV=production & node server.js 
于 2021-12-02T16:14:55.693 回答
-2

看起来

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

不适合我。我目前正在我的 Windows 机器上尝试这个。当我击中:

npm run start_windows

它会在控制台上执行而不会出现错误,但是当我尝试回显时

echo %NODE_ENV%

没有任何结果,这意味着它不存在并且根本没有设置...

于 2020-06-25T08:59:40.783 回答