#node.js #npm
Вопрос:
Я хочу запустить сценарий npm, для которого сервер должен работать в течение всего времени выполнения сценария.
Мой сценарий выглядит так
"scripts" :{ "start": "tsc amp;amp; node dist/app.js"}
Это мой основной скрипт для запуска моего сервера, который отлично работает. Однако,
У меня в проекте узла есть скрипт get_data.js
, который я буду использовать для сбора данных и сохранения в базе данных ( npm run save_data
). Я хочу, чтобы сервер был остановлен по get_data.js
завершении, так как я просто заинтересован в получении данных.
"scripts" :{
"start": "tsc amp;amp; node dist/app.js",
"save_data": "tsc amp;amp; node dist/get_data.js"
}
Очевидно, что мой save_data
сценарий неправильный. Есть какие-нибудь идеи или рекомендации, что я могу сделать?
Комментарии:
1. Я бы добавил pm2, затем скрипт postinstall , который запускает a
pm2 start "npm run start:app"
, затем переключилсяstart
наstart:app
и добавил тот, дляstart
которогоpm2 start all
"save_data": "pm2 stop all amp;amp; tsc amp;amp; node dist/get_data.js"
вместо этого есть, в основном поместите pm2 впереди, чтобы вы могли отменить запуск при запуске другого скрипта
Ответ №1:
Возможно, я неправильно истолковываю ваш вопрос, но я думаю, что то, что вы хотите, находится process.exit(0);
в конце «get_data.js» или всякий раз, когда вы определили, что хотите, чтобы процесс завершился в вашем сценарии.
(Хотя я должен отметить, что get_data.js должно идти своим чередом и завершиться само собой, если только в вашем коде нет чего-то, что препятствует этому.)
Ответ №2:
Вы можете напрямую позвонить save_data
внутрь start
:
"start": "tsc amp;amp; node dist/app.js amp;amp; npm run save_data"
Комментарии:
1. Спасибо. Я не хочу
save_data
работать, когда сервер работает в нормальном состоянииnpm start
. Я хочуsave_data
запустить его так же, как и любые другие сценарии, такие какnpm lint
иnpm test
.