По умолчанию выполняется всегда, независимо от запускаемого скрипта.
Вот мой код:
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"
},
Где я сделал ошибку?
Не могли бы вы запустить один из скриптов прямо в терминале? Например: 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 посмотрите, работает ли это?
я запустил и все работает
Затем, как и предполагал @ponsfrilus, переменная среды не установлена должным образом. Используйте export NODE_ENV, как было предложено, или используйте библиотеку, например dotenv.
@MegaRoks - Какую ОС вы используете? Похоже на Windows, но... (Если вы используете *nix, ponsfrilus прав насчет env var.)
& было бы неправильно делать в Linux, по крайней мере - не уверен насчет Windoze
Я не думаю, что капитальный набор нужен. А также просто используйте ; вместо &. Проверьте этот ответ: stackoverflow.com/a/27090755/960623
Я использую ОС Windows
@ponsfrilus And also, just use ; instead of &. Check this answer - в этом ответе НЕ используется НИ ; ни & ... - вы ссылались на неправильный ответ?
@Jaromanda X ошибка
@MegaRoks просто используйте это, это кросс-платформенный: npmjs.com/package/dotenv
@Baruch Как им пользоваться?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


похоже, что 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. Показывает => {
Не могли бы вы поделиться с нами содержанием левой части?
Я исправил эту ошибку; в функцию была принята переменная developmentMode, но мою проблему это не решило. Ветка default все еще выполняется.
Здорово. Итак, я предполагаю, что теперь в функции принят process.env.NODE_ENV. Можете ли вы проверить, действительно ли это строка, скрывающая один из случаев, когда проверяется выражение switch?
Как мне правильно передать ссылку на базу данных в pol?