本地服务器似乎是以" heroku本地网站开始的#34;不会监视文件更改并重新启动自身。我该怎么做呢?
答案 0 :(得分:15)
最简单的方法是运行带有heroku local
的nodemon作为可执行文件 - 即nodemon --exec "heroku local"
。
但是,heroku local
以默认的nodemon关闭信号(SIGUSR2)的非零退出代码退出,因此您需要向nodemon添加一个额外的标志,以将中断信号设置为SIGTERM。
nodemon --exec "heroku local" --signal SIGTERM
(用heroku-cli@6.14.31-33a2d0a,nodemon @ 1.12.1,node@8.5.0测试)
答案 1 :(得分:6)
heroku local
只使用node-foreman
(https://www.npmjs.com/package/heroku-local),因此直接使用它更容易观看。
首先,安装foreman
和nodemon
:
npm i --save-dev foreman nodemon
现在,您需要在package.json
中设置两个脚本:
{
...
"scripts": {
"start": "nf start",
"watch": "nodemon --watch directory-to-watch"
},
...
}
您现在可以在观看该目录时运行该应用程序,并使用
重新加载更改npm run watch
答案 2 :(得分:0)
我认为heroku local
将watch
更改为静态资源(客户端代码)。但是,使用您对Web服务器所做的每个源代码更改(服务器端代码)手动重启服务器显然并不理想。
如果您正在创建NodeJS应用程序,我的建议是尝试Gulp提供的watch
命令。但是,这也要求您(a)安装Gulp,(b)编写Gulp脚本。同样,此解决方案仅适用于NodeJS,如果heroku local
为您监视文件,则不需要执行这些步骤。
安装Gulp
npm install gulp --save-dev
添加Gulp脚本(Procfile所在的位置)
注意:无法使以下watch
代码成功运行,但它可能为其他人提供了创建有效解决方案的模板。
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所在的目录)
gulp heroku-local:watch