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

min*_*tix 12 node.js npm jshint gruntjs

我一直在尝试使用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.
Run Code Online (Sandbox Code Playgroud)

问题是,即使使用--verbose和-debug,它也没有显示任何可以处理错误的内容,只是"路径必须是一个字符串",我用JSLint验证了文件(使用括号)并且它工作得很好,网站也行得很好.

到目前为止我做了什么.

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

Zei*_*vic 23

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

  • 用节点v6.2.2修复它,为5.7.0 (2认同)

Mar*_*cco 13

我更新后,仍然得到错误nodev6.4.0.

是什么帮助了我对github的评论(Jeff Peck):

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

options: {
      jshintrc: '<%= baseDir %>/.jshintrc',
      reporterOutput: "",
      ...
Run Code Online (Sandbox Code Playgroud)

这样做可以grunt jshint完成.

编辑:

好吧,根据Zeid Selimovic的回答,我确实已经更新了node,但没有.这有效,并且优于以前的解决方法grunt-contrib-jshint

  • 这对我有帮助。我添加了`reporterOutput:“”,我的咕gr声工作了。 (2认同)

小智 10

我在更新节点(v6.9.2)后得到了这个问题.通过以下步骤将grunt-contrib-jshint更新到最新版本("1.1.0")后得到解决:

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

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