Мое приложение использует библиотеки Express, Knex и PG. Я настроил свой NODE_ENV
в Heroku на подготовку с помощью команды https://devcenter.heroku.com/articles/nodejs-support#runtime-behavior
( source ):
Setting NODE_ENV and restarting
NODE_ENV: staging
У меня есть промежуточный env в knexfile:
require('dotenv').config();
module.exports = {
test: {
client: 'pg',
connection: process.env.DB_URL_TEST,
migrations: {
directory: './db/migrations',
},
seeds: {
directory: './db/seeds/dev',
},
useNullAsDefault: true,
},
development: {
client: 'pg',
connection: process.env.DB_URL,
migrations: {
directory: './db/migrations',
},
seeds: {
directory: './db/seeds/dev',
},
useNullAsDefault: true,
},
staging: {
client: 'pg',
connection: process.env.DATABASE_URL,
migrations: {
directory: './db/migrations',
},
seeds: {
directory: './db/seeds/dev',
},
useNullAsDefault: true,
},
production: {
client: 'pg',
connection: process.env.DB_URL_PRODUCTION,
migrations: {
directory: './db/migrations',
},
seeds: {
directory: './db/seeds/production',
},
useNullAsDefault: true,
},
};
Мой файл конфигурации базы данных прослушивает NODE_ENV
:
const knex = require('knex');
const config = require('../knexfile');
const dbEnv = process.env.NODE_ENV;
module.exports = knex(config[dbEnv]);
Никаких других конфигурационных переменных в Heroku:
Когда я запускаю миграцию heroku, это продолжает задавать значения по умолчанию для рабочей среды:
Running knex migrate:latest
Using environment: production
Единственный способ принудительно выполнить переход в промежуточную среду env - это установить NODE_ENV
в стадию явной переменной enok Heroku. Я не понимаю, почему промежуточная среда не запускается при запуске миграции.
edit : 1-й и 3-й скриншоты преобразованы в текст. Не могу изменить другое, это всего лишь скриншот части переменных enok Heroku.
** edit 2 **: добавлена команда для установки NODE_ENV на этап