Node.js 在文件更改时重新启动Heroku local?
似乎以“heroku local web”启动的本地服务器不会监视文件更改并自行重新启动。我怎样才能做到这一点呢?我认为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为您查看了文件,则
监视
对静态资源(客户端代码)的更改。但是,使用对web服务器所做的每个源代码更改(服务器端代码)手动重新启动服务器显然并不理想
如果您正在创建NodeJS应用程序,我的建议是尝试Gulp提供的watch
命令。但是,这也需要您(a)安装Gulp,以及(b)编写Gulp脚本。同样,此解决方案只适用于NodeJ,如果heroku local为您查看了文件,则不需要执行这些步骤
监视
代码成功运行,但它可能会为其他人提供创建工作解决方案的模板。
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']);
});
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并正常工作