Javascript Grunt Watch Task Livereload选项指向“表示服务器原因”;watch.livereload.files“;丢失的

Javascript Grunt Watch Task Livereload选项指向“表示服务器原因”;watch.livereload.files“;丢失的,javascript,node.js,gruntjs,Javascript,Node.js,Gruntjs,我正在手工构建一个Gruntfile.js文件以获得学习体验。根据本文中的逻辑,如果某个静态html/css/js文件发生更改,我希望express服务器重新加载。因此,在watch任务中,我有一个livereload选项,可以通过livereload:'将其指向express服务器任务来重新加载express。但是,它没有按计划进行,我得到: Running "watch" task Waiting... Verifying property watch.livereload.files ex

我正在手工构建一个Gruntfile.js文件以获得学习体验。根据本文中的逻辑,如果某个静态html/css/js文件发生更改,我希望express服务器重新加载。因此,在watch任务中,我有一个livereload选项,可以通过
livereload:'
将其指向express服务器任务来重新加载express。但是,它没有按计划进行,我得到:

Running "watch" task
Waiting...
Verifying property watch.livereload.files exists in config...ERROR
>> Unable to process task.
Warning: Required config property "watch.livereload.files" missing.
我看到这条消息不断滚动,直到咕噜声最终消失。这是什么原因造成的?我如何让它在一个静态文件更改时反弹到express的位置?我宁愿将express任务放在watch任务之外,而只是在watch任务中引用它,以保持它看起来更干净

Grunfile.js:

module.exports = function(grunt) {
    require('load-grunt-tasks')(grunt);
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),

        express: {
            options: {
                port: 9000,
                script: 'app.js'
                }
            },

        watch: {
            options: {
                livereload: true
            },

            servedFiles: {
                files: '<%= pkg.name %>/static/**',
                options: {
                  livereload: true
                }
            },

            livereload: {
                options: {
                  livereload: '<%= express %>'
                  }
            }
        }
    });
    grunt.registerTask('default', 'start server', function(target) {
        grunt.task.run('watch');
        console.log("ssss");
        grunt.task.run('express');
    });
}
module.exports=函数(grunt){
要求('load-grunt-tasks')(grunt);
grunt.initConfig({
pkg:grunt.file.readJSON('package.json'),
快递:{
选项:{
港口:9000,
脚本:“app.js”
}
},
观察:{
选项:{
利弗雷罗德:没错
},
服务文件:{
文件:'/static/**',
选项:{
利弗雷罗德:没错
}
},
利弗雷罗德:{
选项:{
livereload:'
}
}
}
});
grunt.registerTask('default','start server',函数(目标){
grunt.task.run('watch');
控制台日志(“ssss”);
grunt.task.run('express');
});
}

我在livereload下的选项中包含了一个文件属性和一个文件列表,修复了错误。话虽如此,但这并不是跳出express,最好的方法只是将标准方法作为一项任务(确保使用spawn:false)