宣伝されているようにrjs
、Play では次のことができます。
WebJar 内から参照されるすべての JavaScript リソースが、jsdelivr CDN から自動的に参照されるようにします。さらに、.min.js ファイルが見つかった場合は、それが .js の代わりに使用されます。ここでの追加ボーナスは、html を変更する必要がないことです!
しかし、私はそれを機能させることができないようです。
- Play アプリをプロダクション モードで実行しようとしましたが、すべての webjar JavaScript がローカルとして参照されたままです。
.min
本番環境で使用されている JavaScript ファイルのバージョンがわかりません。依存性注入を本番モードで機能させることができません。たとえば、
jquery
このようにコードに挿入したい場合define(['jquery'], function ($) { 'use strict'; console.log($.grep); return { sum: function (a, b) { return a + b; } }; });
私はこれを開発モードでうまく動作させることができますが、プロダクションモードではrjs
失敗したと言います
[info] Error: ENOENT, no such file or directory '/Users/khanguyen/Desktop/rjsdemo/target/web/rjs/build/js/jquery.js'
[info] In module tree:
[info] main
[info] app
[info]
[info] Error: Error: ENOENT, no such file or directory '/Users/khanguyen/Desktop/rjsdemo/target/web/rjs/build/js/jquery.js'
[info] In module tree:
[info] main
[info] app
[info]
[info] at Error (native)
Webjar によって生成された構成セットアップにもかかわらず、明らかに、jQuery の間違った場所を見ています。
requirejs.config({"paths":{"jquery":["/webjars/jquery/1.11.1/jquery","jquery"]},"shim":{"jquery":{"exports":"$"}},"packages":[]}) }
の正しい場所を取得しjquery
ます。
私は Play 2.4.0 をpipelineStages := Seq(rjs, digest)
使用しており、build.sbt にセットアップされています。
どこを間違えたのか教えてください。
ありがとう!