【问题标题】:NodeJS environment variables undefinedNodeJS 环境变量未定义
【发布时间】:2021-06-29 17:35:56
【问题描述】:

我正在尝试创建一些环境变量,但是当我创建文件并运行服务器时,似乎未定义。我正在使用nodemon。我已经重新启动了我的服务器,但没有运气。

更新

.env

MONGO_ATLAS_PW = "xxxx";
JWT_KEY = "secret_this_should_be_longer";

package.json

...
  "scripts": {
    ...
    "start:server": "nodemon ./server/server.js"
  }

app.js

 require('dotenv').config();
 ...
 console.log(process.env.JWT_KEY); //undefined 

【问题讨论】:

    标签: javascript node.js json nodejs-server


    【解决方案1】:

    我相信 nodemon.json 文件仅用于设置 nodemon 特定配置。如果您查看 nodemon docs for a sample nodemon.json file,他们提到设置的唯一 env 变量是 NODE_ENV。

    您是否考虑过将应用的这些环境变量放在 .env 文件中?有一个名为 dotenv 的包有助于管理 Node 中的环境变量。

    首先,使用命令npm install dotenv安装dotenv

    然后,在根目录中创建一个名为 .env 的文件,内容如下:

    MONGO_ATLAS_PW=xxxxx
    JWT_KEY=secret_this_should_be_longer
    

    最后,在导入后的 app.js 文件中添加以下行:

    require('dotenv').config()
    

    【讨论】:

    • 你的目录结构是什么样的? .env 在您的项目中位于哪里,app.js 在哪里? .env 应该在根目录中。此外,您还没有完全复制 .env 文件的语法——它不应该是 JavaScript 语法(尽管这不会导致变量未定义)。
    【解决方案2】:

    我相信您指的是dotenv package。要配置它,首先创建一个名为 .env 的文件,其中存储您的键和值,如下所示:

    MONGO_ATLAS_PW=xxxxx
    JWT_KEY=secret_this_should_be_longer
    

    然后,在您的 server.js 中,在顶部附近添加:

    require("dotenv").config();
    

    那么process.env 变量将是一个包含.env 中的值的对象。

    【讨论】:

    • 查看语法 - 它必须是完全正确。尝试将我的答案中的.env 复制/粘贴到您的文件中,看看这是否有效@PatricioVargas。
    【解决方案3】:

    这需要在我的项目的根目录中。

    nodemon.json

    {
      "env": {
        "MONGO_ATLAS_PW": "xxxx",
        "JWT_KEY": "secret_this_should_be_longer"
      }
    }
    

    【讨论】:

      【解决方案4】:

      env 变量不包含尾随空格并且还删除引号

      MONGO_ATLAS_PW = "xxxx"; 
      JWT_KEY = "secret_this_should_be_longer";
      

      MONGO_ATLAS_PW=xxxx 
      JWT_KEY=secret_this_should_be_longer
      

      重启服务器

      或者您也可以尝试使用 nodemon.json - 在您的 根目录

      中创建一个名为 nodemon.json 的新文件
      {
          "env": {
              "MONGO_ATLAS_PW" : "xxxx",
              "JWT_KEY" : "secret_this_should_be_longer"
          }
      }
      

      重启服务器

      用于访问变量

      process.env.MONGO_ATLAS_PW 
      process.env.JWT_KEY
      

      【讨论】:

        猜你喜欢
        • 2020-03-27
        • 1970-01-01
        • 1970-01-01
        • 2020-08-09
        • 2021-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-22
        相关资源
        最近更新 更多