«параметры подключения к командной строке не переданы» Ошибка Knex

#knex.js

#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
  

Может кто-нибудь, пожалуйста, объяснить, что не так и как исправить.

Ответ №1:

попробуйте, выполнив следующую команду- knex migrate:latest --env development

Ответ №2:

У меня была та же ошибка. Моя проблема заключалась в следующем:

У меня 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 (это не существует в моей конфигурации). Передача существующего env ( production ) или добавление production-4 в мой список конфигураций решает проблему.

Убедитесь, что knex получил правильную конфигурацию (с клиентом, подключением, пулом, миграцией …)

Ответ №3:

Вам нужно добавить параметр командной строки —knexfile вместе с путем к файлу knexfile.

Пример:- npx knex migrate:latest --knexfile ./db/knexfile.js

Примечание:- Путь к файлу knexfile будет относительно того, откуда вы выполняете команду.