Javascript “装载”;Gruntfile.js“;任务语法错误

Javascript “装载”;Gruntfile.js“;任务语法错误,javascript,gruntjs,Javascript,Gruntjs,我在尝试运行grunt时遇到以下错误: Loading "Gruntfile.js" tasks...ERROR SyntaxError: missing ) after argument list Warning: Task "default" not found. Use --force to continue. Aborted due to warnings. 我想知道是否有人能帮我纠正这个问题 这是我的Grunfile文件: module.exports = function(grun

我在尝试运行grunt时遇到以下错误:

Loading "Gruntfile.js" tasks...ERROR
SyntaxError: missing ) after argument list
Warning: Task "default" not found. Use --force to continue.
Aborted due to warnings.
我想知道是否有人能帮我纠正这个问题

这是我的Grunfile文件:

module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
      },
      dist: {
        files: {
          'public/dist/js/<%= pkg.name %>.min.js' : ['public/src/js/<%= pkg.name %>.js']
        }
      },
      dev: {
        options: {
          compress: false,
          beautify: true,
          mangle: false
        },
        files: {
          'public/dist/js/<%= pkg.name %>.min.js' : ['public/src/js/<%= pkg.name %>.js']
        }
      }
    },
    imageoptim: {
      myTask: {
        src: ['public/src/img','public/dist/img']
      }
    },
    sass: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
      },
      dist: {
        options: {
          style: 'compressed'
        },
        files: {
          'public/dist/css/<%= pkg.name %>.min.css' : 'public/src/css/<%= pkg.name %>.scss'
        }
      },
      dev: {
        options: {
          style: 'expanded'
        },
        files: {
          'public/dist/css/<%= pkg.name %>.min.css' : 'public/src/css/<%= pkg.name %>.scss'
        }
      }
    },
    watch: {
      css: {
        files: ['public/src/css/*.scss'],
        tasks: ['sass:dev']
      },
      js: {
        files: ['public/src/js/*.js'],
        tasks: ['uglify:dev']
      }
    },
    concat: {
      options: {
        separator: ';'
      },
      dist: {
        src: ['public/src/js/jquery-1.10.2.js', 'public/src/js/plugins/*.js', 'public/src/js/main.js'],
        dest: 'public/dist/js/<%= pkg.name %>.js'
      }
    },
    eslint: {
      target: ['public/src/js/*.js']
    },
    webstandards: {
      dist: {
        src: ['public/dist']
      }
    },
    mochaTest: {
        test: {
            options: {
                reporter: 'spec',
                captureFile: 'results.txt'
            },
            src: ['public/src/js/**/*.js']
        }
    },
    clean: ['public/dist/css', 'public/dist/js']
  });

  // Load the plugin that provides the "uglify" task.
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-sass');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-clean');
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-eslint');
  grunt.loadNpmTasks('grunt-imageoptim');
  grunt.loadNpmTasks('grunt-webstandards');
  grunt.loadNpmTasks('grunt-mocha');
  grunt.loadNpmTasks('grunt-mocha-test');

  // Default task(s).
  grunt.registerTask('default', 'Dev Default Task', function() {
    grunt.log.writeln('\n********* RUNNING DEV TASKS -- NOT FOR PRODUCTION *********');
    grunt.task.run(['uglify:dev', 'sass:dev', 'eslint', 'mochaTest']);
  };
  // Optimize images.
  grunt.registerTask('img', ['imageoptim']);
  grunt.registerTask('dist', ['uglify:dist', 'sass:dist', 'webstandards:dist']);
  grunt.registerTask('dev', ['uglify:dev', 'sass:dev', 'eslint', 'mochaTest']);

};
module.exports=函数(grunt){
//项目配置。
grunt.initConfig({
pkg:grunt.file.readJSON('package.json'),
丑陋的:{
选项:{
横幅:'/*!*/\n'
},
地区:{
档案:{
'public/dist/js/.min.js':['public/src/js/.js']
}
},
开发人员:{
选项:{
压缩:错,
美化:对,,
马槽:错
},
档案:{
'public/dist/js/.min.js':['public/src/js/.js']
}
}
},
imageoptim:{
我的任务:{
src:['public/src/img','public/dist/img']
}
},
sass:{
选项:{
横幅:'/*!*/\n'
},
地区:{
选项:{
样式:“压缩”
},
档案:{
“public/dist/css/.min.css”:“public/src/css/.scss”
}
},
开发人员:{
选项:{
样式:“扩展”
},
档案:{
“public/dist/css/.min.css”:“public/src/css/.scss”
}
}
},
观察:{
css:{
文件:['public/src/css/*.scss'],
任务:['sass:dev']
},
js:{
文件:['public/src/js/*.js'],
任务:['uglify:dev']
}
},
康卡特:{
选项:{
分隔符:';'
},
地区:{
src:['public/src/js/jquery-1.10.2.js','public/src/js/plugins/*.js','public/src/js/main.js'],
dest:'public/dist/js/.js'
}
},
埃斯林:{
目标:['public/src/js/*.js']
},
网站标准:{
地区:{
src:[“公共/地区”]
}
},
莫切特:{
测试:{
选项:{
记者:"规格",,
captureFile:'results.txt'
},
src:['public/src/js/***.js']
}
},
干净:['public/dist/css','public/dist/js']
});
//加载提供“丑”任务的插件。
grunt.loadNpmTasks(“grunt-contrib-uglify”);
grunt.loadNpmTasks(“grunt-contrib-sass”);
grunt.loadNpmTasks(“grunt-contrib-watch”);
grunt.loadNpmTasks(“grunt-contrib-clean”);
grunt.loadNpmTasks(“grunt-contrib-concat”);
grunt.loadNpmTasks(“grunt-eslint”);
glunt.loadNpmTasks('grunt-imageoptim');
grunt.loadNpmTasks(“grunt-webstandards”);
grunt.loadNpmTasks(“grunt-mocha”);
grunt.loadNpmTasks(“grunt-mocha-test”);
//默认任务。
registerTask('default','Dev default Task',function(){
grunt.log.writeln('\n**********正在运行开发任务--不用于生产任务********');
run(['uglify:dev','sass:dev','eslint','mochaTest']);
};
//优化图像。
grunt.registerTask('img',['imageoptim']);
grunt.registerTask('dist',['uglify:dist','sass:dist','webstandards:dist']);
registerTask('dev',['uglify:dev','sass:dev','eslint','mochaTest']);
};
在第107行(我想)您错过了在第104行打开的结束(

这一部分应该解决这个问题

// Default task(s).
grunt.registerTask('default', 'Dev Default Task', function() {
    grunt.log.writeln('\n********* RUNNING DEV TASKS -- NOT FOR PRODUCTION *********');
    grunt.task.run(['uglify:dev', 'sass:dev', 'eslint', 'mochaTest']);
});

您缺少
默认任务定义结尾处的结束
。非常感谢。真是个白痴,竟然错过了。呵呵。