Nodemon 与 gulp watch 绑定时崩溃并重新启动两次以上
Posted
技术标签:
【中文标题】Nodemon 与 gulp watch 绑定时崩溃并重新启动两次以上【英文标题】:Nodemon crashed when bound with gulp watch and restarted more than twice 【发布时间】:2018-03-05 23:11:50 【问题描述】:我正在尝试使用单个 gulp 命令使我的进程(webpack、nodemon-restart)工作。这工作得很好。但是,如果 webpack 的任务绑定到 gulp 的默认任务(与 nodemon 一起),或者嵌入到 nodemon 的 gulp 任务中,则 webpack 只会构建一次。
然后我决定将 webpack 构建任务和 nodemon 重新启动任务绑定到 gulp 的 watch 命令,这正是我想要的方式,除了如果你进行更改并保存它们超过两次,应用程序 nodemon 崩溃并打印此错误在控制台中
"/home/nnanyielugo/Workspace/activity-calendar/node_modules/nodemon/lib/monitor/match.js:132
var rules = monitor.sort(function (a, b)
^
TypeError: Cannot read property 'sort' of undefined"
作为一种解决方案,我尝试使用 .on() 方法将 webpack 构建任务绑定到 nodemon 重启,而是得到了重启重建的无限循环(nodemon 首先重启,webpack 构建,nodemon 再次重启,webpack重建,等等)。
请问有人有解决办法吗?`
这是我的代码示例`
var gulp = require('gulp'),
nodemon = require('gulp-nodemon'),
webpack = require('webpack-stream');
gulp.task('default', ['watch']);
gulp.task('webpack', function()
return gulp.src('src/entry.js')
.pipe(webpack(require('./webpack.config.js')))
.pipe(gulp.dest('./public'));
);
gulp.task('nodemon', function ()
return nodemon(
script: 'app.js'
, ext: 'js html'
, env: 'NODE_ENV': 'development'
)
)
gulp.task('watch', function()
gulp.watch(['./api/**/*.js', './server/**/*.js', './*.js'], ['webpack', 'nodemon']);
)`
【问题讨论】:
【参考方案1】:我猜,您的nodemon
和gulp's
监视任务相互冲突。要么你应该使用nodemon
并依赖gulp
来启动你的应用程序。
否则,您可以像这样摆脱gulp's
监视任务并在您的nodemon
的restart
方法中添加相关脚本,
nodemon(
// script goes here.
).on('restart', your_reload_logic)
希望这会有所帮助!
【讨论】:
在nodemon的restart方法中添加webpack的transpiler命令'webpack'会使nodemon进入一个无休止的reatart循环(nodemon在webpack transpiles之前重启,然后nodemon必须再次重启,webpack再次构建,nodemon再次重启,一直在继续。以上是关于Nodemon 与 gulp watch 绑定时崩溃并重新启动两次以上的主要内容,如果未能解决你的问题,请参考以下文章
将 browsersync 与 gulp/nodemon 一起使用
更改 *.js 文件后,页面重新加载非常缓慢(~30sec-2min)[express+gulp+gulp-nodemon+browser-sync]