Он всегда работает по умолчанию, независимо от запущенного скрипта

По умолчанию выполняется всегда, независимо от запускаемого скрипта.

Вот мой код:

import { Pool } from 'pg';
import config from './../config';

const connectionString = () => {
    switch (process.env.NODE_ENV) {
        case 'development': console.info('0'); return config.db_dev.connectionString;
        case 'production': console.info('1'); return config.db_prod.connectionString;
        case 'test': console.info('2'); return config.db_test.connectionString;
        default: console.info('3'); return config.db_dev.connectionString;
    }
}

export default new Pool({
    connectionString: connectionString(),
    ssl: true,
});

Файл package.json:

"scripts": {
    "start": "nodemon --exec babel-node src/index.js",
    "devbuild": "SET NODE_ENV=development & babel src --out-dir dev-hyperspotters-backend",
    "build": "SET NODE_ENV=production & babel src --out-dir hyperspotters-backend",
    "test": "SET NODE_ENV=test & mocha --timeout 10000 --require @babel/register"
  },

Где я сделал ошибку?

Как мне правильно передать ссылку на базу данных в pol?

MegaRoks 25.04.2019 09:21
stackoverflow.com/questions/234742/… Попробуйте export NODE_ENV=test; mocha...
ponsfrilus 25.04.2019 09:22

Не могли бы вы запустить один из скриптов прямо в терминале? Например: NODE_ENV=development & node_modules/.bin/babel src --out-dir dev-hyperspotters-backend && node_modules/.bin/nodemon --exec node_modules/.bin/babel-node src/index.js посмотрите, работает ли это?

Baruch 25.04.2019 09:23

я запустил и все работает

MegaRoks 25.04.2019 09:24
stackoverflow.com/questions/25112510/…
ponsfrilus 25.04.2019 09:24

Затем, как и предполагал @ponsfrilus, переменная среды не установлена ​​​​должным образом. Используйте export NODE_ENV, как было предложено, или используйте библиотеку, например dotenv.

Baruch 25.04.2019 09:24

@MegaRoks - Какую ОС вы используете? Похоже на Windows, но... (Если вы используете *nix, ponsfrilus прав насчет env var.)

T.J. Crowder 25.04.2019 09:24
& было бы неправильно делать в Linux, по крайней мере - не уверен насчет Windoze
Jaromanda X 25.04.2019 09:26

Я не думаю, что капитальный набор нужен. А также просто используйте ; вместо &. Проверьте этот ответ: stackoverflow.com/a/27090755/960623

ponsfrilus 25.04.2019 09:26

Я использую ОС Windows

MegaRoks 25.04.2019 09:27

@ponsfrilus And also, just use ; instead of &. Check this answer - в этом ответе НЕ используется НИ ; ни & ... - вы ссылались на неправильный ответ?

Jaromanda X 25.04.2019 09:30

@Jaromanda X ошибка

MegaRoks 25.04.2019 09:30

@MegaRoks просто используйте это, это кросс-платформенный: npmjs.com/package/dotenv

Baruch 25.04.2019 09:31

@Baruch Как им пользоваться?

MegaRoks 25.04.2019 09:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
14
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

похоже, что connectionString не передается в функцию.

    const connectionString = (process.env.NODE_ENV) => {
        switch(process.env.NODE_ENV){
            case 'development':
                return 0
            case 'production':
                return 1
            case 'test':
                return 2
            default:
                return 3
        }
    }

Pool = {
    connectionString: connectionString(process.env.NODE_ENV),
    ssl: true
}

Выдает ошибку функции Invalid left-hand side in arrow function parameters. Показывает => {

MegaRoks 26.04.2019 05:48

Не могли бы вы поделиться с нами содержанием левой части?

Edwin 26.04.2019 06:19

Я исправил эту ошибку; в функцию была принята переменная developmentMode, но мою проблему это не решило. Ветка default все еще выполняется.

MegaRoks 26.04.2019 06:21

Здорово. Итак, я предполагаю, что теперь в функции принят process.env.NODE_ENV. Можете ли вы проверить, действительно ли это строка, скрывающая один из случаев, когда проверяется выражение switch?

Edwin 26.04.2019 07:20

Другие вопросы по теме