【发布时间】:2020-03-08 17:19:18
【问题描述】:
我正在使用 Node,我在我的 PC 上安装了 dotenv,并在 .env 文件中存储了一个虚拟环境变量 (API_KEY=43783283287)。
还要考虑以下文件的路径(如果有帮助):
- app.js 存储在 bloccit/src/app.js 中
- .env 存储在 bloccit/.env 中
- main-config.js 存储在 bloccit\src\config\main-config.js 中
要全图,这也是代码摘录
main-config.js:
require("dotenv").config()
const path = require("path");
const viewsFolder = path.join(__dirname, "..", "views");
app.js:
const express = require("express");
const app = express();
const appConfig = require("./config/main-config.js");
console.log(process.env); //returns windows environment variables
console.log(process.env.API_KEY); //returns undefined
const routeConfig = require("./config/route-config.js");
appConfig.init(app, express);
routeConfig.init(app);
module.exports = app;
.env:
API_KEY=43783283287
问题:当我运行我的 app.js 文件(其中包括 console.log(process.env))时,我得到了所有 Windows 环境变量的列表(见下图),但我没有在列表中看到我的 API_KEY。
另外,如果我执行console.log(process.env.API_KEY),它会返回undefined。
我做错了什么?
【问题讨论】:
-
一方面,您没有显示实际调用 dotenv 的代码。因为除非您实际加载它,否则它不会向
process.env添加任何内容。 -
嗨@Mike'Pomax'Kamermans,我包含上面的代码是为了给你更多的上下文。当您说“调用 dotenv”时,您的意思是
require("dotenv").config()吗? -
请记住,dotenv 会告诉您“尽早在应用程序中要求并配置 dotenv”,因此请在 app.js 中将该行设为第 1 行,而不是“在 main-config 中添加一行”。在这种情况下也不要试图变得聪明:
.env文件进入你的根目录,app.js进入你的根目录,app.js 得到require("dotenv").config()。如果其中任何一个都不是这种情况,您必须指示 dotenv 在哪里明确找到它需要加载的.env文件,这通常是完全没有必要的。 -
我在这里看不到任何有问题的东西。将 .env 放在 root 中,并将 app.js 放在 src 中是可以的。你能确认那里叫“.env”
-
酷,祝你好运
标签: node.js environment-variables dotenv