knexfile.js 不读取 Dotenv 变量

knexfile.js does not read Dotenv variables

所以我正在试用 knexjs,第一个设置非常有效。我已经建立了我的连接,创建了一个数据结构,并在我的终端中 运行 $ knex migrate:latest. 一切正常...迁移的表出现在我的数据库中 运行 再次迁移并得到 Already up to date.

现在我遇到了一个问题:使用 Dotenv...这是我的代码:

require('dotenv').config();

module.exports = {

        development: {

            client: process.env.DB_CLIENT,
            connection: {

                host: process.env.DB_HOST,

                user: process.env.DB_ROOT,
                password: process.env.DB_PASS,

                database: process.env.DB_NAME,
                charset: process.env.DB_CHARSET

            }
        }
};

据我所知,它没有任何问题,当我 运行 通过节点的脚本时,没有出现任何错误。 然后我想检查我是否仍然可以进行迁移,但我收到以下错误:

Error: ER_ACCESS_DENIED_ERROR: Access denied for user ''@'[MY IP]' (using password: YES)

这次我只使用我的 .env 文件中的相同变量。但是当我查看错误时,没有从中加载任何内容,是的,knexfile.js.env 都在我的项目的根目录中 :) 我尝试过的事情之一是在内部以不同的方式设置路径require('dotenv').config(); 但随后它会从 dotenv 中抛出错误,这意味着文件已经正确加载。

谁能帮我解决这个问题?

所以经过反复试验,我终于弄清楚出了什么问题。我不知道是什么原因造成的,但不知何故 Knex 的安装没有正确完成...

我卸载并重新安装了 Knex(本地和全局)。然后首先我将它安装在全局级别而不是作为依赖项。之后我再次初始化了 Knex ( $ knex init ) 并从头开始。

我想,但我仍然不确定为什么,因为我找不到任何关于它的信息,安装 Knex 的顺序很重要(或者对我来说很重要,我什至不确定我第一次做错了什么).

在旁边

如果您是 Knex 的新手,只是盲目地遵循随机 tutorial/article 并为 Knex 创建一个新文件(即 knexfile.js),Knex 仍然可以工作,但其他包可能无法执行适当地。这是我在发现的大多数文章中看不到的内容,请阅读有关如何生成所需文件(迁移和种子)的文档。大多数文章没有正确涵盖这些步骤。

希望这物有所值