我有一个像这样的db.js文件
import "dotenv/config";
const devConfig = `"${process.env.PG_USER}://${process.env.PG_USER}:${process.env.PG_PASSWORD}@${process.env.PG_HOST}:${process.env.PG_PORT}/${process.env.PG_DATABASE}"`;
const prodConfig = process.env.DATABASE_URL;
const dbConnection =
process.env.NODE_ENV === "production" ? prodConfig : devConfig;
console.log(dbConnection);
export default dbConnection;console.log函数正确地输出我需要的字符串(在我的例子中是"postgres://postgres:learn@sql@localhost:5432/EPL" )
但是,当我试图在另一个文件中导入dbConnection变量时,我只得到了"undefined://undefined:undefined@undefined:undefined/undefined"。
我试图使用dbConnection变量的文件代码如下所示。
import pgPromise from "pg-promise";
import dbConnection from "../db.js";
const pgp = pgPromise({});
const db = pgp(dbConnection);
console.log(dbConnection);我做错了什么?
发布于 2022-05-12 07:37:29
默认情况下,dotenv在中查找.env文件(运行应用程序时所处的目录).
默认值:path.resolve(process.cwd(), '.env')
如果您运行node query.js,那么您的CWD就是query.js所在的任何目录,dotenv将在目录中查找.env。
如果要强制dotenv在与db.js文件相同的目录中查找,ES模块版本如下所示.
// db.js
import { dirname, resolve } from "path";
import { fileURLToPath } from "url";
import dotenv from "dotenv";
dotenv.config({
path: resolve(dirname(fileURLToPath(import.meta.url)), ".env"),
});
// create and export your connection strings...如果你不使用ES模块,它看起来会更像这样
const { resolve } = require("path");
require("dotenv").config({ path: resolve(__dirname, ".env") });发布于 2022-05-12 06:42:58
你能试试这个吗?
import dotenv from "dotenv";
//Write this as early as possible in your application
//This will use the local .env file.
dotenv.config(); https://stackoverflow.com/questions/72210020
复制相似问题