web-dev-qa-db-ja.com

ngAnnotate-警告:StringMapには文字列キーが必要です

Gruntおよびgrunt-ng-annotateを使用すると、この警告が表示されます。

警告にはファイル内のエラーの場所への参照がないため、デバッグが困難になります。

何か案は?

14
iss42

この問題は、ES6表記の使用であることが判明しました。この場合、矢印関数(=>)、defaultパラメータ、およびletです。

なぜngAnnotateがこれをサポートしないのかについては、詳しく調べていません。

問題がどこにあるかを見つけるために、私はgrAnスイッチ-forceを使用してngAnnotate警告を上書きし、ビルドの後半でuglifyはES6構文についてより詳細に文句を言いました。

28
iss42

私も同じ問題に直面しましたが、私の場合、別の問題がありました。

チームメンバーの1人が、関数パラメーターをいくつかのデフォルト値に初期化しました。次のようなもの。

$scope.functionName = function(defaultVar = false){ 
    //some code 
}

そして、私のガラガラのスクリプトには、行がありました

.pipe(plugins.if(release, plugins.ngAnnotate()))

したがって、この行を削除すると、ビルドスクリプトは、エラーが発生した正確なファイルと行番号を指すエラーをコンソールに自動的に出力しました。

最後に、変数の初期化コードを削除することで解決できました。

これが誰かを助けることを願っています...

6
Mr. Noddy

考えられる理由:

  • _() => {}_
  • _{ value }_
  • let
  • function (...args)
  • function (defaultVar = false)

ソリューション:

  • function () {}
  • _{ value: value }_
  • var
  • function (args)
  • function (defaultVar) { defaultVar = (defaultVar === undefined) ? false : defaultVar }
0
D. H.