1

Play 2.3 アプリ (sbt 0.13.5) を "activator stage" コマンドでビルドしているときに、次のエラーが表示されます。

Optimizing JavaScript with RequireJS
Error: Error: paths fallback not supported in optimizer. Please provide a build config path override for angular-easyfb

build.sbt:

...
"org.webjars.bower" % "angular-easyfb" % "1.3.1"

main.js:

shim: {
  'angular': {
      deps: ['jquery'],
      exports: 'angular'
  },
  ...
  'angular-easyfb': ['angular']
},
paths: {
    ...
    'angular': ['../lib/angularjs/angular'],
    'angular-easyfb': ['../lib/angular-easyfb/angular-easyfb'],
     ...
}});

開発モードでは、すべて正常に動作します。私の他の webjar ベースの js-libs は、プロダクション モードでも問題なく機能します (例: "org.webjars" % "angular-elastic" % "2.4.2")。

Google と SO は、「パスのフォールバックはオプティマイザーでサポートされていません」という結果をたくさん出してくれます。解決策を見つけた人もいれば、見つけられなかった人もいるようです。

どうすれば (Java と Javascript の専門家として) 問題が何であるかを体系的に分析できますか?

4

1 に答える 1

2

この投稿をご覧ください: Play フレームワークで RequireJS オプティマイザーを使用するには?

RequireJS 最適化サポートはすべての Webjar に適用されるわけではなく、Classic Webjar に限定されることが判明しました。

いくつかの説明があります。http://mvnrepository.com/artifact/org.webjars.bower/angular-easyfb/1.3.1を見ると、その jar ファイルには webjars-requirejs.js が含まれていません。したがって、これはデフォルトで webjar が requirejs と互換性がない場合です。

そして、ここに別のことがあります:

角かっこがあることを忘れないでください。そうしないと、CDN の置き換えが行われません。requirejs 対応ではないスクリプトの場合、パスを宣言するときに角括弧を使用しないでください。そうしないと、rjs はサポートされていないエラー パス フォールバックでビルドを拒否します。

したがって、パスから角かっこを削除してみてください。

'angular-easyfb': '../lib/angular-easyfb/angular-easyfb',
于 2015-07-14T08:20:05.583 に答える