我正在尝试将.env
值包装在配置文件中。在另一个文件(即server.js)上调用时,它正在工作。但是在undefined
文件内调用时返回config.js
。
文件夹结构
root
-- server
---- server.js
-- .env
-- config.js
.env
MAIL_USER = email@gmail.com
PORT = 8000
config.js
const mailUser = process.env.MAIL_USER;
const PORT = process.env.PORT;
module.exports = {
mailUser,
PORT
}
server.js
import dotenv from "dotenv";
dotenv.config();
import app from "./express";
import mongoose from "mongoose";
import config from "../config";
... // some other settings are defined here // ...
app.listen(3000, err => {
if (err) {
console.log(err);
}
console.log(`Server running on port ${config.PORT}`);
console.log(process.env.MAIL_USER);
console.log(mailUser);
});
控制台上的输出
email@gmail.com
undefined
在process.env.MAIL_USER
文件内部调用undefined
时config.js
是ubuntu:16.04
会出现什么问题?
答案 0 :(得分:0)
我建议您尝试从“ dotenv”导入dotenv,然后尝试使用dotenv.config() 我如何在导入中使用dotenv?
答案 1 :(得分:0)
您正在dotenv
文件中加载server.js
扩展名,这就是为什么您的ENV变量在config.js
中不可见的原因,请像您一样尝试在config.js
处加载它们:
import dotenv from "dotenv";
dotenv.config();
如之前所建议的,您可以运行脚本而无需在代码中导入dotenv
lib:
node -r dotenv/config server.js
答案 2 :(得分:0)
我想,如果您只想保留config.js来导出这些属性,则必须为 dotenv 和dotenv.config()
添加导入。然后,您可以直接从该文件中调用导出的值,而无需在server.js文件中重新导入dotenv。
答案 3 :(得分:0)
就我而言,重新启动服务器可以解决问题。
此外,请记住,您正在导出config.js
文件中的两个变量,但只使用了该文件中的PORT
变量。
答案 4 :(得分:0)
import dotenv/config;
而不是 dotenv
注意:您不需要调用 dotenv.config() 并且必须使用此方法通过命令行或环境变量传递选项
来源:https://www.npmjs.com/package/dotenv#how-do-i-use-dotenv-with-import-