【问题标题】:Nodemon crashed when bound with gulp watch and restarted more than twiceNodemon 与 gulp watch 绑定时崩溃并重新启动两次以上
【发布时间】: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']);
})`

【问题讨论】:

    标签: node.js webpack gulp gulp-watch nodemon


    【解决方案1】:

    我猜,您的nodemongulp's 监视任务相互冲突。要么你应该使用nodemon 并依赖gulp 来启动你的应用程序。

    否则,您可以像这样摆脱gulp's 监视任务并在您的nodemonrestart 方法中添加相关脚本,

    nodemon({
       // script goes here.
    }).on('restart', your_reload_logic)
    

    希望这会有所帮助!

    【讨论】:

    • 在nodemon的restart方法中添加webpack的transpiler命令'webpack'会使nodemon进入一个无休止的reatart循环(nodemon在webpack transpiles之前重启,然后nodemon必须再次重启,webpack再次构建,nodemon再次重启,一直在继续。
    猜你喜欢
    • 2015-12-25
    • 2015-08-27
    • 2015-05-18
    • 2018-07-08
    • 2019-06-22
    • 1970-01-01
    • 2013-10-22
    • 2014-06-23
    • 2016-06-03
    相关资源
    最近更新 更多