“未传递任何命令行连接参数” Knex错误

时间:2019-04-01 05:04:23

标签: knex.js

我正在尝试使用命令运行knexfile迁移

knex migrate:latest

并收到以下错误

/Users/<MYUSERNAME>/.npm-global/lib/node_modules/knex/bin/utils/cli-config-utils.js:8
    throw new Error(
    ^

Error: No default configuration file '/Users/<MYUSERNAME>/Desktop/Zipline/ed-tester/knexfile.js' found and no commandline connection parameters passed
    at mkConfigObj (/Users/<MYUSERNAME>/.npm-global/lib/node_modules/knex/bin/utils/cli-config-utils.js:8:11)

我的knexfile.js

module.exports = {

  development: {
    client: 'postgresql',
    connection: {
      database: process.env.DB_NAME || 'db',
      user: process.env.DB_USERNAME,
      password: process.env.DB_PASSWORD,
      host: process.env.DB_HOSTNAME,
    },
    pool: {
      min: 2,
      max: 10
    },
    migrations: {
      tableName: 'knex_migrations'
    }
  }
};

和我的.env

DB_USERNAME=postgres
DB_HOSTNAME=localhost
DB_NAME=db
DB_PASSWORD=
DB_SSL=false

有人可以解释什么地方出了问题以及如何解决。

2 个答案:

答案 0 :(得分:0)

尝试通过运行以下命令- knex migrate:latest --env development

答案 1 :(得分:0)

我有同样的错误。我的问题是:

我有一个knexfile.js像这样:

require('dotenv').config();
const { DB_USERNAME, DB_PASSWORD, APP_ENV } = process.env;
module.exports = {

  development: {
    // ...
  },

  staging: {
    // ...
  },

  production: {
    // ...
  },

}[APP_ENV];

然后我将production-4作为APP_ENV传递(它在我的配置中不存在)。传递存在的环境(production或在我的配置列表中添加production-4即可解决问题。

确保knex获得正确的配置(包括客户端,连接,池,迁移...)