grunt-contrib-jshint 警告:路径必须是字符串;

Posted

技术标签:

【中文标题】grunt-contrib-jshint 警告:路径必须是字符串;【英文标题】:grunt-contrib-jshint warning: path must be a string; 【发布时间】:2016-07-25 22:57:22 【问题描述】:

我一直在尝试使用 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,它也没有显示任何可以解决错误的方法,只是“路径必须是字符串”,我使用 JSLint(使用方括号)验证了文件并且它工作得很好好吧,网站也可以正常工作。

到目前为止我做了什么。

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

【问题讨论】:

Gulp 似乎是构建解决方案的更好选择,它比 Grunt 更容易、更快捷; 你运行的是什么版本的节点?我刚刚更新到 6,我收到了这个错误。 【参考方案1】:

我通过将 grunt-contrib-jshint 从“0.10.0”更新为“0.12.0”解决了这个问题。

【讨论】:

这用 node v6.2.2 修复它,是 5.7.0【参考方案2】:

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

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

我发现问题出在 reportOutput 选项设置为 空值。如果您更改该选项以引用空字符串,则 jshint 将按预期工作:

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

这样做允许grunt jshint 完成。

编辑:

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

【讨论】:

这对我有帮助。我添加了reporterOutput: "",,我的繁重任务成功了。【参考方案3】:

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

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

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

【讨论】:

以上是关于grunt-contrib-jshint 警告:路径必须是字符串;的主要内容,如果未能解决你的问题,请参考以下文章

前端自动化工具 grunt 插件 jshint 的简单使用

双向心跳线

Java开发工程师应该掌握的JS语法

Java开发工程师应该掌握的JS语法

C++寻路算法

反应路由器和科尔多瓦不工作