0

我正在构建一个节点 CLI 应用程序,它使用 dontenv 加载一些环境变量以连接到 mysql 数据库。

我用了

npm link

命令链接到全局并从任何地方运行 CLI 应用程序。我面临的问题是 .env 文件只有在我从 .env 所在的文件夹运行时才会加载。

在此处输入图像描述

然后如果从不同的文件夹运行相同的命令......我得到了错误,这个错误是因为 dontenv 没有正确加载 .env 文件

在此处输入图像描述

顺便说一句,这就是我阅读 .env 的方式,没什么特别的(据我所知)

config.js中

require('dotenv').config();

let config = {};

config.MYSQL_HOST = process.env.MYSQL_HOST
config.MYSQL_DB_PROFILES = process.env.MYSQL_DB_PROFILES
config.MYSQL_USER = process.env.MYSQL_USER
config.MYSQL_PASS = process.env.MYSQL_PASS
config.AWS_PROFILE = process.env.AWS_PROFILE

module.exports = config;

然后我有一个 index.js(package.json 中的主要入口点),它调用我拥有的 process.js

const config = require('./config');

...

async function getProfileData(clientdb) {
    let conn = mysql.createConnection({
        host: config.MYSQL_HOST,
        user: config.MYSQL_USER,
        password: config.MYSQL_PASS,
        database: config.MYSQL_DB_PROFILES
    });
    conn.connect();

这就是我的问题:((任何帮助将不胜感激)

4

1 回答 1

1

我认为问题在于,当您从文件夹外部运行应用程序时,它找不到您需要的 .env 文件的路径。您应该尝试在配置文件中指定 .env 路径,如下所示:

require('dotenv').config({ path: '/full/path/to/your/env/file' })

看看这是否有助于解决问题。

于 2020-11-15T16:58:01.163 回答