knexfile.js不读取Dotenv变量

时间:2018-05-23 12:51:01

标签: javascript node.js knex.js laravel-dotenv

所以我正在尝试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

            }
        }
};

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

  

错误:ER_ACCESS_DENIED_ERROR:拒绝用户“@”[我的IP]的访问权限   (使用密码:是)

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

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

因此经过一些试验和错误,我终于弄明白了什么是错的。我不知道是什么导致了它,但不知怎的,Knex的安装没有正确完成......

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

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

在旁边

如果您是Knex的新手,只是盲目跟随随机教程/文章并为Knex创建一个新文件(即knexfile.js),Knex仍然可以工作,但其他软件包可能无法正常执行。这是我在大多数文章中都没有看到的,请阅读有关如何生成所需文件(迁移和种子)的文档。大多数文章都没有正确地介绍这些步骤。

希望这是值得的