为啥通过 Grunt 运行 Google JavaScript Linter 会失败?

Posted

技术标签:

【中文标题】为啥通过 Grunt 运行 Google JavaScript Linter 会失败?【英文标题】:Why does running Google JavaScript Linter via Grunt fail?为什么通过 Grunt 运行 Google JavaScript Linter 会失败? 【发布时间】:2016-11-13 13:25:36 【问题描述】:

我们使用gjslinter 和 Grunt 来检查我们项目中的所有 js 文件。

Gruntfile.js 中的配置如下所示:

gjslint: 
    options: 
        flags: ['--disable 220,110,200'],
        reporter: 
            name: 'gjslint_xml',
            dest: '<%= pkg.docs %>/gjslint/gjslint.xml'
        
    ,
    all: 
        src: ['<%= pkg.src %>/assets/js/modules/**', '<%= pkg.src %>/assets/js/lib/jquery/plugins/jquery-hse/**']
    

但是当我开始 linting 时它失败了:

$ grunt gjslint Running "gjslint:all" (gjslint) task
Warning: Task "gjslint:all" failed. Use --force to continue.

Aborted due to warnings.

为什么?路径应该是正确的。不再有错误消息或报告。我该如何调试?

【问题讨论】:

【参考方案1】:

我按照以下步骤找到了解决方案(此处为 Windows 10):

    已安装Python2.7 https://www.python.org/downloads/ 将 Python 安装目录 C:/Python27 以及 C:/Python27/Scripts 添加到 PATHPYTHONPATH 环境变量

    通过在命令行中运行来安装 Google javascript Linter:

    pip install https://github.com/google/closure-linter/zipball/master

    更改了 Grunt 的记者设置:

(Gruntfile.js):

reporter: 
    name: 'console' //report to console

现在我在运行grunt gjslint 时在控制台中收到正确的错误消息。它告诉我有一个 min.js 文件,其中包含一些无效代码。因此,我通过为 min 文件添加一个例外将其从 Gruntfile.js 中删除:

src: [
  '<%= pkg.src %>/assets/js/modules/**/*.js',
  '<%= pkg.src %>/assets/js/lib/jquery/plugins/jquery-hse/**/*.js',
  '!<%= pkg.src %>/assets/js/**/*.min.js'
]

这解决了问题!

【讨论】:

以上是关于为啥通过 Grunt 运行 Google JavaScript Linter 会失败?的主要内容,如果未能解决你的问题,请参考以下文章

通过 Grunt 运行 Node 应用程序

grunt js在啥地方执行

为啥从 Eclipse 运行 Google App 时出现以下错误?

Grunt、Gulp.js 和 Bower 有啥区别?为啥以及何时使用它们?

来自Webstorm的Grunt调试

为啥 Google 删除了运行 Python 3.7 的 App Engine 的 Image API?