【问题标题】:automatically reloading Koa server自动重新加载 Koa 服务器
【发布时间】:2014-03-30 12:22:08
【问题描述】:

我已经开始使用Koa,但到目前为止还没有找到合适的解决方案来在代码更改时自动重新加载应用程序。

我的理解是 nodemon 是 Node 世界中的首选解决方案,但由于 --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 -x "/path/to/node-unstable/bin/node --harmony" app.js
  • 谢谢,这行得通 - 显然我应该更小心地使用 RTFM。 (虽然我最初在使用地址时遇到了一些问题,所以我编写了一个包装脚本来确保先关闭现有服务器。)

标签: node.js nodemon koa


【解决方案1】:

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

【讨论】:

  • 这也是我的假设,但这给了我同样的语法错误。
  • 也许你甚至没有使用 node v0.11
  • 你说得对,v0.11 版本(故意)不在我的 PATH 上,所以这无法正常工作 - 与 export PATH="node-unstable/bin:$PATH" 一起工作正常。
【解决方案2】:

我想推荐你“pm2”:http://pm2.keymetrics.io/

pm2 是一个进程管理器。 它管理您的应用程序状态,因此您可以启动、停止、重新启动和删除进程。

您可以轻松安装 pm2(通常在您的机器上)输入: sudo npm install -g pm2

基本上 pm2 当看到你的代码有一些变化时,他会立即重启你的进程,如果你的进程崩溃,他会重新启动并记录错误.. 有关更多信息,请查看文档页面: http://pm2.keymetrics.io/docs/usage/cluster-mode/

【讨论】:

    【解决方案3】:

    在这个 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);
    });
    

    显然,您的其他选项可能有所不同,但我将整个内容都包含在内,因为当我学习某些内容时只看到答案中的最低限度,这让我很恼火。

    【讨论】:

      【解决方案4】:

      我最近使用 KOA 创建了一个简单的 Web API,至于代码更改后的重新加载操作,我使用了babel-watch

      repo 中已经说明了使用它的好处:

      如果您厌倦了将 babel-node 与 nodemon(或类似解决方案)一起使用。上述设置执行如此糟糕的原因是 babel-node 本身的启动时间。 babel-watch 仅在“master”进程中启动 babel,它还启动文件观察程序。转译也在该过程中执行。在文件观察器事件中,它生成一个纯节点进程,并将来自父进程的转译代码与源映射一起传递。这让我们可以避免每次重启 JS 脚本/应用程序时加载 babel 及其所有的 dep。

      【讨论】:

        【解决方案5】:

        我的 Koa 服务器运行良好

        nodemon server.js

        【讨论】:

          猜你喜欢
          • 2018-06-01
          • 1970-01-01
          • 2017-05-03
          • 2016-04-23
          • 2017-11-04
          • 1970-01-01
          • 2020-12-14
          • 2012-11-10
          相关资源
          最近更新 更多