Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在文件更改时重新启动Heroku local?_Node.js_Heroku_Watch_Nodemon - Fatal编程技术网

Node.js 在文件更改时重新启动Heroku local?

Node.js 在文件更改时重新启动Heroku local?,node.js,heroku,watch,nodemon,Node.js,Heroku,Watch,Nodemon,似乎以“heroku local web”启动的本地服务器不会监视文件更改并自行重新启动。我怎样才能做到这一点呢?我认为heroku local将监视对静态资源(客户端代码)的更改。但是,使用对web服务器所做的每个源代码更改(服务器端代码)手动重新启动服务器显然并不理想 如果您正在创建NodeJS应用程序,我的建议是尝试Gulp提供的watch命令。但是,这也需要您(a)安装Gulp,以及(b)编写Gulp脚本。同样,此解决方案只适用于NodeJ,如果heroku local为您查看了文件,则

似乎以“heroku local web”启动的本地服务器不会监视文件更改并自行重新启动。我怎样才能做到这一点呢?

我认为heroku local将
监视
对静态资源(客户端代码)的更改。但是,使用对web服务器所做的每个源代码更改(服务器端代码)手动重新启动服务器显然并不理想

如果您正在创建NodeJS应用程序,我的建议是尝试Gulp提供的
watch
命令。但是,这也需要您(a)安装Gulp,以及(b)编写Gulp脚本。同样,此解决方案只适用于NodeJ,如果heroku local为您查看了文件,则不需要执行这些步骤

  • 安装
  • 安装

  • 添加Gulp脚本(Procfile所在的位置)

    注意:无法使以下
    监视
    代码成功运行,但它可能会为其他人提供创建工作解决方案的模板。

    var gulp = require('gulp');
    var exec = require('child_process').exec;
    
    gulp.task('heroku-local', function () {
      exec("heroku local");
    });
    
    gulp.task('heroku-local:watch', function () {
      gulp.watch([
        'file-to-watch',
        'folder-to-watch/**/*'
      ], ['heroku-local']);
    });
    
  • 运行Gulp脚本(从Procfile所在的目录)


  • heroku local
    只使用了
    节点领班(node foreman
    ()),因此更容易直接使用它进行观看

    首先,安装
    foreman
    nodemon

    npm i --save-dev foreman nodemon
    
    {
      ...
      "scripts": {
        "start": "nf start",
        "watch": "nodemon --watch directory-to-watch"
      },
      ...
    }
    
    现在,您需要在
    包.json中设置两个脚本:

    npm i --save-dev foreman nodemon
    
    {
      ...
      "scripts": {
        "start": "nf start",
        "watch": "nodemon --watch directory-to-watch"
      },
      ...
    }
    
    现在,您可以在应用程序监视该目录并使用重新加载更改时运行该应用程序

    npm run watch
    

    最简单的方法是运行nodemon,将
    heroku local
    作为可执行文件,即
    nodemon--exec“heroku local”

    但是,
    heroku local
    退出时,默认nodemon关机信号(SIGUSR2)的退出代码为非零,因此您需要向nodemon添加一个附加标志,以将中断信号设置为SIGTERM

    nodemon--exec“heroku local”--信号SIGTERM


    (用heroku测试)-cli@6.14.31-33a2d0a,nodemon@1.12.1, node@8.5.0)

    对于任何在搜索解决方案时遇到此帖子的人。。。如果您同意在计算机上全局安装nodemon,则可以更新heroku Procfile()以使用nodemon而不是node:

    web:nodemon index.js

    同样,必须全局安装nodemon才能运行:

    npm i-g nodemon

    然后,您应该能够像正常情况一样在本地运行heroku,并让nodemon监视更改:


    heroku本地网站

    您是否尝试过
    spawn
    方法?这可能行得通……我正在使用gulp watcher通过访问我创建的特殊路由,
    /killme
    ,然后再次启动它来终止节点进程。当然,这个url不应该存在于live网站上,但在本地是有用的。在gulpfile中:
    exec(“curlhttp://localhost:5000/killme (heroku local);在my node.js/express app中:
    router.get('/killme',function(req,res){process.exit(1);})这可以根据需要工作-重新启动heroku local,进行任何更改。工作非常好!谢谢没有与nodemon 1.11.0一起使用,但升级到1.18.3并正常工作