【问题标题】:Environment variables not changing in Node.jsNode.js 中的环境变量不变
【发布时间】:2020-12-22 11:36:39
【问题描述】:
  1. set NODE_ENV=production 在我的电脑上不工作。 NODE_ENV 没有从“发展”改变

    if(app.get('env') === 'development'){
        app.use(morgan('tiny'));
        console.log("Morgan enabled...");
    }
    
  2. set PORT=5000 不工作 - PORT 没有从“3000”更改。

    const port = process.env.PORT || 3000;
    app.listen(port, () => console.log(`Listening on port ${port}...`));
    

【问题讨论】:

  • 什么操作系统?你如何运行你的脚本?
  • 请添加一个示例,说明您如何使用环境运行应用程序
  • 你是在制作文件夹 .env 并安装 dotenv 并制作配置
  • @Mohammed_Alreai 这不能回答问题,也不是设置环境变量的唯一方法
  • 准确描述如何设置环境变量。例如,如果您在一个控制台窗口中运行 node,并在另一个窗口中设置变量,这将永远无法工作。这不是节点问题。您如何尝试设置变量值?

标签: node.js windows environment-variables


【解决方案1】:

作为 Windows 用户,我过去在导出/设置环境变量以供节点使用时遇到问题。

我最终使用了dotenv NPM package,因为无论您在什么系统上开发,您都可以确保它正确加载环境变量。

Dotenv 是一个零依赖模块,可将环境变量从 .env 文件加载到 process.env 中。

首先,安装并保存:

npm i dotenv

在项目的根目录中创建一个名为 .env 的文件

PORT=5000

您可以使用简单的X=Y 语法设置任意数量的变量。

然后,在您的代码中的某处:

require('dotenv').config();

// my main application code

通过上面的示例,您现在可以访问process.env.PORT,这将等于5000(从.env 文件中设置的值)

注意:通过添加.gitignore 规则避免将.env 存储在版本控制中:

node_modules/

# Other ignore rules...

# Add this line
.env

祝你好运!

【讨论】:

  • 您在设置环境变量时遇到过什么样的问题?
  • 我记不清了,因为几个月来我一直在使用这个dotenv 解决方案。对我来说,部分问题是在调用 NPM 命令之前设置一个变量。另一个问题是该项目涉及 Linux 系统上的另一个开发人员,我们不想维护每个命令中的两个:一个用于 linux,一个用于 Windows。所以我们实施了这个解决方案。
【解决方案2】:

您应该通过yarn add dotenv 安装dotenv,然后将文件放到.env 文件夹中 在服务器或应用程序的主页添加此代码

const dotenv=require('dotenv').config({path:'./env})

//这取决于你在哪里存储 .env 和路径的名称文件 并在文件 .env 中制作变量 端口=3000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-19
    • 2018-03-09
    • 2014-09-30
    • 2016-02-06
    • 2011-12-04
    • 2022-11-25
    • 2021-11-25
    相关资源
    最近更新 更多