#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 будет относительно того, откуда вы выполняете команду.