автоматическая перезагрузка сервера Koa
Вопрос
Я начал играть с Koa, но до сих пор не смогли найти достойное решение для автоматической перезагрузки приложения при изменении кода.
Мое понимание таково, что нодемон является предпочтительным решением во вселенной узлов, но я получаю ошибки из-за --harmony
флаг (требуется Koa):
$ node_modules/.bin/nodemon /path/to/node-unstable/bin/node app.js
/path/to/node-unstable/bin/node --harmony $@
^^^^^^^
SyntaxError: Unexpected identifier
[nodemon] app crashed - waiting for file changes before starting...
Решение
node_modules/.bin/nodemon --harmony-generators app.js
должно быть достаточным
Другие советы
Я хотел бы порекомендовать вам "pm2". : http://pm2.keymetrics.io/
pm2 - это менеджер процессов.Он управляет состояниями ваших приложений, так что вы можете запускать, останавливать, перезапускать и удалять процессы.
Вы можете легко установить pm2 (обычно на свой компьютер), набрав:установка sudo npm - g pm2
В принципе, pm2, когда видит некоторые изменения в вашем коде, он немедленно перезапускает ваш процесс, если ваш процесс завершится сбоем, он будет перезапущен, и ошибка будет зарегистрирована..Для получения дополнительной информации ознакомьтесь со страницей документации:http://pm2.keymetrics.io/docs/usage/cluster-mode/
Установка параметра 'execMap' в этой задаче gulp работает для меня:
var nodemon = require('gulp-nodemon');
gulp.task('serve-dev', function() {
var options = {
script: './src/server/app.js',
execMap: {
"js": "node --harmony"
},
delayTime: 1,
env: {
'PORT': port,
'NODE_ENV': 'dev'
},
watch: ['./src/server/']
};
return nodemon(options);
});
Очевидно, что ваши другие варианты могут отличаться, но я включил все это целиком, поскольку меня раздражает, когда я изучаю что-то, чтобы видеть в ответе только минимум.
Недавно я закончил создание простого веб-API с использованием KOA, и что касается действия перезагрузки после изменения кода, которое я использовал вавилон-смотреть
Преимущество его использования уже указано в репозитории:
Если вы устали использовать babel-node вместе с nodemon (или аналогичным решением).Причина, по которой вышеупомянутая настройка выполняется так плохо, заключается во времени запуска самого babel-node.babel-watch запускает babel только в "главном" процессе, где он также запускает средство просмотра файлов.Транспиляция также выполняется в этом процессе.При событиях file-watcher он порождает процесс чистого узла и передает перенесенный код из родительского процесса вместе с исходными картами.Это позволяет нам избежать загрузки babel и всех его deps каждый раз, когда мы перезапускаем JS script / app.