在Ubuntu中它非常简单;我可以使用以下命令运行应用程序:
$ NODE_ENV=production node myapp/app.js
但是,这在Windows上不起作用。是否有可以设置属性的配置文件?
答案 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的调用相同的行上设置参数,那将是理想的选择。请仔细查看以下内容,并按照说明运行:
您有以下两种选择:
在命令行:
set NODE_ENV=production&&npm start
或
set NODE_ENV=production&&node index.js
运行" npm运行start_windows"在命令行中,package.json文件配置如下
//package.json
"scripts": {
"start": "node index.js"
"start_windows": "set NODE_ENV=production&&node index.js"
}
它在Windows上运行的技巧是你需要删除"&&"之前和之后的空格。
答案 4 :(得分:28)
您可以使用
npm run env NODE_ENV=production
这可能是最好的方法,因为它在Windows和Unix上兼容。
来自npm run-script documentation:
env脚本是一个特殊的内置命令,可用于列出在运行时脚本可用的环境变量。如果在包中定义了“env”命令,它将优先于内置命令。
答案 5 :(得分:13)
如果您将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>
'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 variables下,选择New ...这将打开New System Variable对话框。
输入变量名称和值,然后单击“确定”。
您需要关闭所有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
很容易:
npm install --save dotenv-safe
安装。index.js
的开头)并直接与process.env
command一起使用: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%
一无所有,这意味着它不存在,而且根本没有设置...