首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确使用DOTENV

正确使用DOTENV
EN

Stack Overflow用户
提问于 2022-05-12 04:05:42
回答 2查看 348关注 0票数 1

我有一个像这样的db.js文件

代码语言:javascript
复制
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变量的文件代码如下所示。

代码语言:javascript
复制
import pgPromise from "pg-promise";
import dbConnection from "../db.js";

const pgp = pgPromise({});
const db = pgp(dbConnection);
console.log(dbConnection);

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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模块版本如下所示.

代码语言:javascript
复制
// 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模块,它看起来会更像这样

代码语言:javascript
复制
const { resolve } = require("path");
require("dotenv").config({ path: resolve(__dirname, ".env") });
票数 2
EN

Stack Overflow用户

发布于 2022-05-12 06:42:58

你能试试这个吗?

代码语言:javascript
复制
import dotenv from "dotenv";
//Write this as early as possible in your application
//This will use the local .env file.
dotenv.config(); 
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72210020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档