Условно присваиваем постоянное значение в js - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь присвоить sequelize другое значение в зависимости от того, работает ли приложение локально или на сервере. Это мой код:

    const sequelize = production
  ? sequelizeHeroku.connect(Sequelize)
  : new Sequelize(database, user, password, {
      host,
      dialect: "mysql",
      pool: {
        max: 10,
        min: 0,
        acquire: 30000,
        idle: 10000
      }
    });

Это не работает локально, так как, когда я регистрирую значение sequelize, это false. Однако, если я попытаюсь присвоить переменную следующим образом:

const sequelize = new Sequelize(database, user, password, {
  host,
  dialect: "mysql",
  pool: {
    max: 10,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});

, все будет работать нормально. Я также проверил, что console.log(production == true) печатает false. Что я делаю неправильно?

1 Ответ

0 голосов
/ 14 февраля 2020

Лучше использовать NODE_ENV переменную окружения. Например,

index.ts:

import { Sequelize } from 'sequelize';
import assert from 'assert';

const database = 'sample';
const user = 'testuser';
const password = 'testpass';
const host = '127.0.0.1';

const sequelize =
  process.env.NODE_ENV === 'production'
    ? 'sequelize heroku'
    : new Sequelize(database, user, password, {
        host,
        dialect: 'mysql',
        pool: {
          max: 10,
          min: 0,
          acquire: 30000,
          idle: 10000,
        },
      });

assert(process.env.NODE_ENV === 'production', 'NODE_ENV should be "production"');
assert(sequelize === 'sequelize heroku', 'Should use heroku sequelize in production environment');

Выполнить код в среде production:

NODE_ENV=production npx ts-node ./index.ts

Подтверждение не удалось. Работает как положено.

...