web-dev-qa-db-ja.com

grunt-contrib-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を使用しても、エラーに対して機能するものが何も表示されないことです。「パスは文字列である必要があります」だけです。ファイルをJSLintで検証し(角かっこを使用)、非常にうまく機能します。また、正常に動作します。

私がこれまでにしたこと。

  • Node.jsとノードモジュールを3回アンインストールしました(毎回異なることを試みます)。
  • 非常に単純なjsファイルを検証するためにgruntタスクを制限しようとしましたが、機能しません。これは、コードまたはgruntfile.jsに関連していないことを意味します。
13
minimalistix

Grunt-contrib-jshintを「0.10.0」から「0.12.0」に更新することでこの問題を修正しました。

22
Zeid Selimovic

nodev6.4.0に更新した後も、まだエラーが発生していました。

私を助けたのは githubに関するこのコメント (Jeff Peckによる):

ReporterOutputオプションがnullに設定されている場合に問題が発生することがわかりました。空の文字列を参照するようにそのオプションを変更すると、jshintは期待どおりに機能します。

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

そうすることで、grunt jshintが完了しました。

編集:

さて、私はnodeを更新しましたが、 Zeid Selimovicの回答 に従ってgrunt-contrib-jshintは更新しませんでした。これは機能し、以前の回避策よりも優れています

13
Mario Trucco

ノード(v6.9.2)の更新直後に問題が発生しました。 grunt-contrib-jshintを最新バージョン( "1.1.0")に更新した後、次の手順で解決されました。

npmアンインストールgrunt-contrib-jshint--save-dev

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

10
Vaibhav S