5

宣伝されているようにrjs、Play では次のことができます。

WebJar 内から参照されるすべての JavaScript リソースが、jsdelivr CDN から自動的に参照されるようにします。さらに、.min.js ファイルが見つかった場合は、それが .js の代わりに使用されます。ここでの追加ボーナスは、html を変更する必要がないことです!

しかし、私はそれを機能させることができないようです。

  1. Play アプリをプロダクション モードで実行しようとしましたが、すべての webjar JavaScript がローカルとして参照されたままです。
  2. .min本番環境で使用されている JavaScript ファイルのバージョンがわかりません。
  3. 依存性注入を本番モードで機能させることができません。たとえば、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 にセットアップされています。

どこを間違えたのか教えてください。

ありがとう!

4

1 に答える 1