#node.js
#node.js
Вопрос:
Я бы хотел внутри моего package.json выполнить некоторый скрипт, который установит переменные среды, которые может использовать мое приложение. Мне нужно что-то вроде этого (в моем package.json)
"scripts": {
"dev": "set-env-vars.sh amp;amp; webpack-dev-server --hot --inline amp; cd server amp;amp; NODE_ENV=development node app.js",
},
Это мой set-env-vars.sh файл:
#!/bin/bash
export ENV_MONGODB_URI="mongodb://localhost:27017/mydb"
...
Я знаю, что мне нужно использовать исходный код или. чтобы экспортировать мои переменные в оболочку, это работает в оболочке, но не для моего package.json dev-script.
Какие-либо решения для достижения этой цели? Спасибо.
Ответ №1:
Проблема заключается в одном амперсанде (amp;) после вызова webpack-dev-server. Завершающий амперсанд направляет командную оболочку на выполнение команды в фоновом режиме. На практике ваша команда будет разделена на 2 части, которые будут вызываться в отдельных оболочках асинхронно. Если вы используете амперсанд (amp;) намеренно, то вы должны использовать переменные env в обеих частях следующим образом:
. ./set-env-vars.sh amp;amp; webpack-dev-server --hot --inline amp; . ./set-env-vars.sh amp;amp; cd server amp;amp; NODE_ENV=development node app.js
итак, переменные из set-env-vars.sh будет доступен как для webpack-dev-сервера, так и для узла
Или, если вы хотите запустить его синхронно:
. ./set-env-vars.sh amp;amp; webpack-dev-server --hot --inline amp;amp; cd server amp;amp; NODE_ENV=development node app.js
Комментарии:
1. Проблема в том, что когда я добавляю
.
илиsource
внутри скрипта, я получаю это:sh: line 0: .: set-env-vars.sh: file not found
2. Я думаю, вам следует использовать
./set-env-vars.sh
вместоset-env-vars.sh
выполнения файла из текущего каталога.3. Итак, наконец, это работает:
webpack-dev-server --hot --inline amp; . ./set-env-vars.sh amp;amp; cd server amp;amp; NODE_ENV=development node app.js
Спасибо!)