我一直在尝试使用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验证文件(使用括号)它工作得很好,网站也运行良好。
到目前为止我做了什么。
答案 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