我有一個像這樣的 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);
我究竟做錯了什么?
uj5u.com熱心網友回復:
默認情況下,在當前作業目錄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") });
uj5u.com熱心網友回復:
你能試試這個
import dotenv from "dotenv";
//Write this as early as possible in your application
//This will use the local .env file.
dotenv.config();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/472500.html
上一篇:等待每個元素
