我已经开始使用Koa,但到目前为止一直无法找到一个合适的解决方案,可以在代码更改时自动重新加载应用程序。
我的理解是nodemon是Node Universe中的首选解决方案,但由于--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...
答案 0 :(得分:13)
node_modules/.bin/nodemon --harmony-generators app.js
应该足够了
答案 1 :(得分:3)
我想推荐你" pm2" :http://pm2.keymetrics.io/
pm2是一个流程管理员。 它管理您的应用程序状态,因此您可以启动,停止,重新启动和删除进程。
您可以轻松安装pm2(通常在您的计算机上)输入: sudo npm install -g pm2
基本上pm2当你看到你的代码发生了一些变化时,他会重新启动你的进程,如果你的进程崩溃,他将重新启动并记录错误。 有关更多信息,请查看文档页面: http://pm2.keymetrics.io/docs/usage/cluster-mode/
答案 2 :(得分:1)
在这个gulp任务中设置'execMap'选项对我有用:
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);
});
显然你的其他选择可能会有所不同,但我把整个事情都包括在内,因为当我在学习某些东西时只会在答案中看到最低限度时,它会让我烦恼。
答案 3 :(得分:0)
我最近使用KOA创建了一个简单的Web API,并且代码更改后的重新加载操作我使用了babel-watch
使用它的好处已在回购中说明:
如果您厌倦了将babel-node与nodemon(或类似解决方案)一起使用。上述设置执行如此糟糕的原因是babel节点本身的启动时间。 babel-watch只会在" master"进程,它也启动文件观察程序。蒸煮也在该过程中进行。在文件监视器事件上,它生成一个纯节点进程,并将来自父进程的转换代码与源映射一起传递。这允许我们每次重新启动JS脚本/ app时都避免加载babel及其所有deps。
答案 4 :(得分:0)
我的 Koa 服务器运行良好
nodemon server.js