Javascript Grunt watch在错误纠正后没有运行得更少

Javascript Grunt watch在错误纠正后没有运行得更少,javascript,gruntjs,grunt-contrib-watch,Javascript,Gruntjs,Grunt Contrib Watch,我遇到了Grunt Watch的一个问题,编译错误更正后,Grunt Watch当前没有重新运行任务 我收到了错误消息,但在更正错误后,grunt说文件已更改,但在此之后不会运行任何任务 Grunt文件: watch: { less: { files: ['public/assets/less/**/*.less'], tasks: ['css'], options: { at

我遇到了Grunt Watch的一个问题,编译错误更正后,Grunt Watch当前没有重新运行任务

我收到了错误消息,但在更正错误后,grunt说文件已更改,但在此之后不会运行任何任务

Grunt文件:

watch: {
        less: {
            files: ['public/assets/less/**/*.less'],
            tasks: ['css'],
            options: {
                atBegin: true,
                nospawn: true
            }
        },
        scripts: {
            files: [
                'public/assets/js/homepage.js'
            ],
            tasks: ['jsApp'],
            options: {
                nospawn: true,
            }
        }
    },
错误日志:

>> ParseError: Unrecognised input in public/assets/less/template.less on line 114, column 31:
>> 114         @media screen and (max-width: 767px) {
>> 115             left: 0;
Warning: Error compiling public/assets/less/main.less
// ----- Corrected the file here, saved again -----
>> File "public/assets/less/template.less" changed.

文件结束。在这一点之后没有任何内容。

您可以简化文件,如下所示:

//src ===============================
                var src;
                config.src = src = {
                     libFolder       : 'lib/**/*.js',
                     lessFolder      : 'less/**/*.less',

                };

//Watch ===============================
                config.watch = {
                     scripts: {
                        files: ["<%= src.libFolder %>", "<%= src.lessFolder %>"]
                        ,tasks: ["dev", "less:dist"]

                     }
                }
因此,我在grunt watch中插入了此任务,因此grunt将监视所有任务的运行,不会出现任何错误


我希望这对您有所帮助。

这是grunt contrib watch package spawn函数的一个问题,您可能希望删除nospawn。如果尚未尝试grunt watch的1.0.0版,则可能需要尝试

这个问题以前已经讨论过了

另外,请注意以下文档:

不生成任务运行会使监视更容易失败,因此 请根据需要使用


在你的位置,我会首先升级,看看我有最新版本的咕噜,咕噜手表和咕噜少。如果这不能解决问题,我会让它正常繁殖。

我也有同样的问题(grunt contrib watch和grunt contrib less的组合)

一个解决方案是设置
spawn:true
,但构建时间会更长


我发现在使用grunt contrib less的最新版本(自1.0.0以来的所有版本)时会出现此问题。使用grunt contrib less 0.12.0,在更正错误后,我可以成功继续观看。

不幸的是,这只是一种配置样式,无法解决我的问题。配置错误后,Grunt仍然不会执行LESS。那么,该错误可能在LESS任务中?试着用grunt-v和--force运行grunt watch,看看你得到了什么。尝试了这个,不幸的是仍然做同样的事情。我有这个问题,在任何地方都找不到任何关于这个的信息。看在上帝的份上,如果你找到了解决办法,请告诉我。如果您将nospawn设置为false,这就不再是问题了,但对我来说,它使更少的编译速度降低了整整1.5秒,这非常烦人。您可以发布template.LESS、main.LESS和您的完整grunt文件的代码吗?我试试看help@Raduken文件本身不是问题,这个错误被触发了,我更正并保存了它,但是Grunt检测到了更改,但实际上并没有再次触发任务。但是为了以防万一,你可以上传文件吗?我也很好奇,看看我是否可以解决这个问题:)不幸的是,我没有文件了,因为代码在3天内发生了很大变化。我清楚地知道错误是什么,我在上面的一行中漏掉了一个},导致它无法识别下一行。很抱歉,我花了一段时间才回到这一行。尝试此操作后,它不再出现错误,但执行
grunt watch
的过程需要很长时间,超过30秒。它没有做任何过于复杂的事情,nospawn更快(最多一秒或两秒),我将它标记为答案,虽然它确实解决了这个问题,尽管产卵速度非常慢。我也发现了这一点,大量的构建时间更长。
grunt.registerTask('dev',['sprite','imagemin','concat:dev', 'uglify']);