自动重新加载Koa服务器

时间:2014-02-27 07:52:58

标签: node.js nodemon koa

我已经开始使用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...

5 个答案:

答案 0 :(得分:13)

node_modules/.bin/nodemon --harmony-generators app.js应该足够了

答案 1 :(得分:3)

我想推荐你" pm2&#​​34; :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