我正在尝试关注NodeJs的教程。我不认为我错过了任何东西,但每当我调用process.env.NODE_ENV
时,我得到的唯一值就是未定义。根据我的研究,默认值应该是“开发”。如何动态设置此值以及最初设置的位置?
答案 0 :(得分:168)
process.env是对您的环境的引用,因此您必须在那里设置变量。
设置environment variable in Windows:
SET NODE_ENV=development
OS X上的或Linux:
export NODE_ENV=development
答案 1 :(得分:44)
对于使用* nix(Linux,OS X等)的人来说,没有理由通过第二个导出命令来执行此操作,您可以将其作为调用命令的一部分进行链接:
NODE_ENV=development node server.js
更容易,不是吗? :)
答案 2 :(得分:43)
<强>提示强>
package.json
中的:
"scripts": {
"start": "set NODE_ENV=dev && node app.js"
}
app.js
中的:
console.log(process.env.NODE_ENV) // dev
console.log(process.env.NODE_ENV === 'dev') // false
console.log(process.env.NODE_ENV.length) // 4 (including a space at the end)
所以,这可能更好:
"start": "set NODE_ENV=dev&& node app.js"
或
console.log(process.env.NODE_ENV.trim() === 'dev') // true
答案 3 :(得分:24)
我们在Windows上使用节点时遇到了这个问题。
我们在应用程序中提供了一个回退,而不是要求任何试图运行应用程序的人设置这些变量。
var environment = process.env.NODE_ENV || 'development';
在生产环境中,我们将按照常规方法(SET / export)定义它。
答案 4 :(得分:6)
在UBUNTU中使用:
$ export NODE_ENV = test
答案 5 :(得分:6)
在 macOS 中,对于使用快速版本4.x.x
并使用DOTENV
插件的用户,需要使用以下代码:
在安装插件之后,在初始化应用程序的文件中,如下所示:
require('dotenv').config({path: path.resolve(__dirname+'/.env')});
在根目录中,创建文件'.env'并添加以下变量:
NODE_ENV=development
要么
NODE_ENV = development
答案 6 :(得分:4)
您可以使用cross-env npm软件包。它将负责修剪环境变量,并确保它可在不同平台上运行。
在项目根目录中,运行:
ob_start();
include 'displaywebpage.php';
$body = ob_get_contents();
ob_end_clean();
然后在package.json中的脚本下添加:
npm install cross-env
然后在终端的项目根目录中,通过运行以下命令启动应用程序:
"start": "cross-env NODE_ENV=dev node your-app-name.js"
然后,环境变量将以npm start
的形式在您的应用中可用,因此您可以执行以下操作:
process.env.NODE_ENV
答案 7 :(得分:2)
在package.json中,我们必须进行如下配置(可在Linux和Mac OS中使用)
重要的是,在下面的构建命令是示例之后,“ export NODE_ENV = production”:
"scripts": {
"start": "export NODE_ENV=production && npm run build && npm run start-server",
"dev": "export NODE_ENV=dev && npm run build && npm run start-server",
}
对于开发环境,我们必须点击“ npm run dev”命令
对于生产环境,我们必须点击“ npm run start”命令
答案 8 :(得分:1)
您也可以通过代码进行设置,例如:
process.env.NODE_ENV = 'test';
答案 9 :(得分:1)
这是由于操作系统
在package.json中,确保具有脚本(其中app.js是要执行的主要js文件,而NODE_ENV在.env文件中声明了)。例如:
"scripts": {
"start": "node app.js",
"dev": "nodemon server.js",
"prod": "NODE_ENV=production & nodemon app.js"
}
对于Windows
还设置具有NODE_ENV = development的.env文件变量
如果您的.env文件位于eg.config文件夹的文件夹中,请确保在app.js(您的主js文件)中指定
const dotenv = require('dotenv'); dotenv.config({path:'./config/config.env'});
答案 10 :(得分:0)
如果您在React中遇到此问题,则需要react-scripts@0.2.3及更高版本。另外,要使NODE_ENV
以外的其他环境变量在React中起作用,它们必须以REACT_APP_
为前缀。
答案 11 :(得分:0)
尽早在您的应用程序中,要求并配置dotenv。
var sample = "29.06.20 look there is something after the date";
RegexOptions options = RegexOptions.None;
// Groups numbers 1 2 3
// v----v v----v v-----v
Regex regex1 = new Regex(@"(\d{2})\.(\d{2})\.(\d{2})", options);
var result = regex1.Replace(sample, "$3.$2.$1");
Console.WriteLine(result); // outputs 20.06.29 look there is something after the date
答案 12 :(得分:0)
对我来说,问题在于我正在使用pkg library将我的应用程序转换为可执行二进制文件。在这种情况下,无法接受的解决方案。但是,使用以下代码解决了我的问题:
const NODE_ENV = (<any>process).pkg ? 'production' : process.env.NODE_ENV;
我在GitHub上找到了此解决方案here。
答案 13 :(得分:0)
在电子 Js 中
"scripts": {
"start": "NODE_ENV=development electron index.js",
},
答案 14 :(得分:0)
如果您定义了名为 process 的任何函数,那么这也可能导致此问题。
答案 15 :(得分:0)
您可以使用 npm 中的 dotenv
包,链接如下:https://www.npmjs.com/package/dotenv
允许您将所有配置放在 .env
文件中