一个文件在express中看不到.env变量

问题描述 投票:0回答:1

我在主文件夹中有一个 Express api (

backend
),其中有一个
.env
文件:

main
  - .env
  - backend

app.js
中,我可以使用
.env
变量连接到我的数据库,如下所示:

const dbconnect = require("./data/db");
require("dotenv").config();

dbconnect();

但是在另一个文件(

seeder.js
)中看不到 .env 文件/变量,所以如果我尝试:

const dbconnect = require("./db");
require("dotenv").config();

dbconnect();

我得到:

MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined"

我的

db
文件:

const mongoose = require("mongoose");

const dbconnect = async () => {
    try {
        await mongoose.connect(process.env.DB);
        // await mongoose.connect("mongodb://127.0.0.1:27017/recipes");
        console.log("Database connected");
    } catch (error) {
        console.log(error);
        process.exit();
    }
};

module.exports = dbconnect;

底线是 -

app.js
有效,但
seeder.js
不起作用,为什么?

node.js express environment-variables
1个回答
0
投票

只需将

dotenv
导入到
db
文件中,

const mongoose = require("mongoose");
require("dotenv").config();

const dbconnect = async () => {
    try {
        await mongoose.connect(process.env.DB);
        // await mongoose.connect("mongodb://127.0.0.1:27017/recipes");
        console.log("Database connected");
    } catch (error) {
        console.log(error);
        process.exit();
    }
};

module.exports = dbconnect;
© www.soinside.com 2019 - 2024. All rights reserved.