2017-12-13 17 views
0

煎茶6.2 CMD 煎茶EXT JS GPL 6+ マイウェブ構造[サーバ側]煎茶6 EXT JS・ビルド - 間違ったパス

-/public_htmlの/関連会社 - /アプリ/振りかける/トラッカー/ /アプリ/振りかける/トラッカー/資産/煎茶/関連会社 - - - [/ EXT内内線を含むワークスペースフォルダ]資産/煎茶は、煎茶のアプリが含まれてい

http://localhost/affiliates で呼ばれているウェブサイド[ブラウザ] アプリから

アプリへのパスはhttp://localhost/assets-raw/tracker/assets/sencha/affiliates

注:http://localhost/assets-raw/tracker/assets/sencha/affiliates/index.html 問題はありません!

私はgoto http://localhost/affiliates 私は古典的な内線/のための404エラー(多分50ish JSをロードすることはできません) また、アプリ/ application.jsを取得していますが

をロードできない場合は、私が追加できるようにする必要があります../assets-raw/tracker/assets/sencha/affiliatesをプロダクションビルドパスだけにコピーします。

しかし、私は、パス側を構築するために区別するパスwebsideが困難であることを発見しています。これを議論するでしょう煎茶のドキュメントを見つけることができません(私はたくさんのドキュメントを通して行ってきた)

ここに私のapp.jsonの設定は https://gist.github.com/bobby5892/bf607a37c79a62820cf7fcaa245553c4

workspace.jsonの設定私はExtJSのを初期化する方法 https://gist.github.com/bobby5892/689c54272ba49d63cb35b96f6a24266d

ですページの

<script type="text/javascript"> 
     var Ext = Ext || {}; // Ext namespace won't be defined yet... 

     // This function is called by the Microloader after it has performed basic 
     // device detection. The results are provided in the "tags" object. You can 
     // use these tags here or even add custom tags. These can be used by platform 
     // filters in your manifest or by platformConfig expressions in your app. 
     // 
     Ext.manifest = '../assets-raw/tracker/assets/sencha/affiliates/classic'; 

    </script> 

    <!-- The line below must be kept intact for Sencha Cmd to build your application --> 
    <script id="microloader" data-app="48a1b848-93ab-47fe-ba5a-a54e94f92ae5" type="text/javascript" src="/assets-raw/tracker/assets/sencha/affiliates/bootstrap.js"></script> 

どうすればそのパスを編集できますか?ここで

は(その要旨に含まれる)app.jsonから関連する部分である

"production": { 
     "frameworks": {   
       "ext": { 
        "path":"../assets-raw/tracker/assets/sencha/ext", 
        "version":"6.2.0.981" 
       } 
      }, 
     "output": 
     { 
       "base": "${workspace.build.dir}/${build.environment}/${app.name}", 
       "page": "../assets-raw/tracker/assets/sencha/affiliates/index.html", 
       "manifest": "../assets-raw/tracker/assets/sencha/affiliates/${build.id}.json", 
       "js": "../assets-raw/tracker/assets/sencha/affiliates/${build.id}/app.js", 
       "appCache": { 
        "enable": false 
       }, 
       "resources": { 
        "path": "${build.id}/resources", 
        "shared": "resources" 
       } 
     }, 
     "loader": { 
      "cache": "${build.timestamp}" 
     }, 
     "cache": { 
      "enable": false 
     }, 
     "compressor": { 
      "type": "yui" 
     }, 
     "manifest": { 
      "embed": true 
     } 

また、私は事前に

sencha app refresh 
sencha app build 

おかげでたくさん入れている、煎茶cmdを介して、ビルドをやっていますこれを理解しようとすることに時間がかかる!

編集:画像を追加して、必要なパスと一致するパスを表示します。

Paths

編集:煎茶のCMDは、ビルドを生成しているとき、classic.jsonで生成されたパスが間違っていることを見出しました。ドキュメンテーションによると、 "page"のapp.jsonで出力パラメータを変更すると動作する可能性があります。私はビルドの "生産"セグメントにそれを持っています。まだ動かない。 :(煎茶のフォーラムで議論中

+0

これは議論のフォローアップであるためポストが拒否されます:/ちょうど推測:ライブシステムにワークスペース構造を導入していますか? その場合、単に(sencha app build)をビルドして、相対パスで完全に動作する出力を使用する必要があります。 これが開発中に発生した場合:json設定を変更した後はどうしましたか?あなたはsenchaアプリの時計を使いますか? これは、すべての必要なメタデータを自動的に再生成し、不正なパスが存在する場合には失敗します。 このサブフォルダの代わりにdocルートからアプリを提供する可能性はありますか? –

答えて

0

結果は成功をもたらした。AJAX呼び出しから取得したが、それらの前には、ExtJSのことで処理された後Ext.Manifestオブジェクト内のパスを変更することで解決 https://www.sencha.com/forum/showthread.php?469231-Sencha-6-EXT-JS-Build-using-CMD-wrong-paths

を。

<script type="text/javascript"> 
    ExtAbsoluteBasePath = "/assets-raw/tracker/assets/sencha/build/production/affiliates/"; 
    var Ext = Ext || {}; // Ext namespace won't be defined yet... 

    // This function is called by the Microloader after it has performed basic 
    // device detection. The results are provided in the "tags" object. You can 
    // use these tags here or even add custom tags. These can be used by platform 
    // filters in your manifest or by platformConfig expressions in your app. 
    // 
    Ext.beforeLoad = function (tags) { 
     var s = location.search, // the query string (ex "?foo=1&bar") 
      profile; 

     // For testing look for "?classic" or "?modern" in the URL to override 
     // device detection default. 
     // 
     if (s.match(/\bclassic\b/)) { 
      profile = 'classic'; 
     } 
     else if (s.match(/\bmodern\b/)) { 
      profile = 'modern'; 
     } 
     else { 
      profile = tags.desktop ? 'classic' : 'modern'; 
      //profile = tags.phone ? 'modern' : 'classic'; 
     } 

     Ext.manifest = ExtAbsoluteBasePath + profile; // this name must match a build profile name 

     // This function is called once the manifest is available but before 
     // any data is pulled from it. 
     // 
     return function (manifest) { 
      // peek at/modify the manifest object 

      console.log(manifest); 
      // Update JS Paths 
      var i=0; 
      manifest.js.forEach(function(jsPath) { 
       console.log("\n Updating JS Path - " + jsPath.assetConfig.path + " to " + ExtAbsoluteBasePath + jsPath.assetConfig.path); 
       manifest.js[i].assetConfig.path = ExtAbsoluteBasePath + jsPath.assetConfig.path; 
       i++; 
      }); 

      // Update CSS Paths 
      i=0; 
      manifest.css.forEach(function(cssPath) { 
       console.log("\n Updating CSS Path - " + cssPath.assetConfig.path + " to " + ExtAbsoluteBasePath + cssPath.assetConfig.path); 
       manifest.css[i].assetConfig.path = ExtAbsoluteBasePath + cssPath.assetConfig.path; 
       i++; 
      }); 


      //manifest.js["0"].assetConfig.path = ExtAbsoluteBasePath + manifest.js["0"].assetConfig.path; 
      console.log("\n JS Path - " + manifest.js["0"].assetConfig.path); 
     }; 
    }; 
</script> 
関連する問題