grunt-contrib-jshint警告:path必须是一个字符串;

时间:2016-04-05 19:57:46

标签: node.js npm gruntjs jshint

我一直在尝试使用jshint grunt模块验证我的代码,但我总是收到以下错误:

Running "jshint" task
[D] Task source: C:\Coursera\03. Intro Angular JS\conFusion\node_modules\grunt-contrib-jshint\tasks\jshint.js

Running "jshint:all" (jshint) task
[D] Task source: C:\Coursera\03. Intro Angular JS\conFusion\node_modules\grunt-contrib-jshint\tasks\jshint.js
Verifying property jshint.all exists in config...OK
Files: Gruntfile.js, app/scripts/app.js
Options: force=false, reporterOutput=null, jshintrc=".jshintrc", reporter={}
Warning: Path must be a string. Received { toString: [Function], reporter: [Function] } Use --force to continue.

问题是即使使用--verbose和-debug,它也不会显示任何错误,只需" path必须是字符串",我用JSLint验证文件(使用括号)它工作得很好,网站也运行良好。

到目前为止我做了什么。

  • unistalled node.js和node modules 3次(每次尝试不同的东西)。
  • 试图将我的grunt任务限制为简单地验证一个非常简单的js文件,并且也不起作用,这意味着与代码或我的gruntfile.js无关。

3 个答案:

答案 0 :(得分:22)

我通过将grunt-contrib-jshint从“0.10.0”更新为“0.12.0”来修复此问题。

答案 1 :(得分:13)

node更新为v6.4.0后,我仍然收到错误。

帮助我的是this comment on github(作者Jeff Peck):

  

我发现当reporterOutput选项设置为时会出现问题   空值。如果更改该选项以引用空字符串jshint   将按预期工作:

options: {
      jshintrc: '<%= baseDir %>/.jshintrc',
      reporterOutput: "",
      ...

这样做可以让grunt jshint完成。

修改

好吧,根据Zeid Selimovic's answer,我确实更新了node,但没有更新grunt-contrib-jshint。这有效,并且优于以前的解决方法

答案 2 :(得分:10)

我在更新节点(v6.9.2)之后就遇到了问题。通过以下步骤将grunt-contrib-jshint更新到最新版本(“1.1.0”)后得到解决:

npm卸载grunt-contrib-jshint --save-dev

npm install grunt-contrib-jshint --save-dev