正确使用 DOTENV
Using DOTENV correctly
我有一个 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);
我做错了什么?
你能试试这个吗
import dotenv from "dotenv";
//Write this as early as possible in your application
//This will use the local .env file.
dotenv.config();
默认情况下,dotenv
在 current working directory 中查找 .env
文件,即 运行 安装您的应用程序时所在的目录...
Path
Default: 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") });
我有一个 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);
我做错了什么?
你能试试这个吗
import dotenv from "dotenv";
//Write this as early as possible in your application
//This will use the local .env file.
dotenv.config();
默认情况下,dotenv
在 current working directory 中查找 .env
文件,即 运行 安装您的应用程序时所在的目录...
Path
Default: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") });