1

2 つのアプリケーションがあります。

  • hrportalcore : BaseController を備えたコア アプリケーション、...
  • hrportalrequestleave : hrportalcore アプリケーションから拡張されたサンプル アプリケーション

hrportalcore には名前空間de.example.coreがあり、dataSourcesも維持されています。( sap.app.dataSourcesmanifest.json 内)。データソースは次のとおりです。

[...]
"HRPOJavaLeave": {
   "uri": "<path>",
   "type": "OData",
   "settings": {
       "annotations": [],
       "odataVersion": "2.0",
       "localUri": ""
   }
}
[...]

データソースは拡張アプリケーションで問題なく使用できますが、コンソールには次のエラーが表示されます。

ここに画像の説明を入力

データソースにエラーが含まれていると表示されますが、使用できます (変ですか?)。

もう 1 つの問題は、Component-preload.js ファイルが一度間違った場所からロードされることです。アプリケーションは問題なく動作しますが、前述のように、間違った場所から 1 回読み込まれますか?

私の hrportalrequestleave の manifest.json は、拡張部分 ( sap.ui5.extends)のようになります。

[...]
"extends": {
    "component": "de.example.core",
    "extensions": {}
},
[...]

親は、 hrportalcore に表示されるように、 neo-app.json/parentで正しく定義されています。

jQuery.sap.declare("de.example.request.leave.Component");

// use the load function for getting the optimized preload file if present
if (!jQuery.sap.isDeclared("de.example.core.Component")) {
    sap.ui.component.load({
        name: "de.example.core",
        // Use the below URL to run the extended application when SAP-delivered application is deployed on cloud
        url: jQuery.sap.getModulePath("de.example.request.leave") + "/parent"
            // we use a URL relative to our own component
            // extension application is deployed with customer namespace
    });
}

this.de.example.core.Component.extend("de.example.request.leave.Component", {
    metadata: {
        manifest: "json"
    }
});

これはすべて、HANA Cloud Platform の Fiori Launchpad で行われます

4

2 に答える 2

0

ログのエラー

「アプリケーション依存関係 de.example.core.Component のエラー: 記述子が見つかりませんでした」

manifest.json に「de.example.core」ではなく「de.example.core.Component」への依存関係が含まれていることを示唆しています。コード スニペットによると、「extends」依存関係は正しいです。他に依存関係はありますか?

バックエンドの AppIndex は依存関係の推移的な閉鎖を計算し、その ID を持つインストールが見つからない場合、上記のエラーが作成され、クライアント側に記録されます。

manifest.json に問題はないように見えても、過去に間違った依存関係が含まれていた可能性がある場合は、AppIndex を再実行する (または定期的に実行するようにスケジュールする) 必要があるかもしれません。

構成エラーにもかかわらずアプリが動作するという事実は、上記のコードが原因です。明示的に計算された URL から de.example.core コンポーネントを明示的にロードします。ただし、そのステップの前に、フレームワークは manifest.json の情報に基づいて既にそれをロードしようとしていますが、そこには明示的な URL に関する情報がありません。

ところで: URL を計算するコードは、manifest.json を修正した後でも、de.example.request.leave アプリのサブパッケージに格納されているように見えるため、AppIndex がコンポーネントを見つけられない可能性があることを示唆しています。AppIndex がこれを処理できるかどうかはわかりません (最上位の manifest.json に埋め込みコンポーネントとしてリストされている場合、ネストされたコンポーネントを処理できますが、依存関係セクションでそのような埋め込みコンポーネントを認識するかどうかはわかりません。その結果、埋め込まれたコンポーネントが既にエンクロージング コンポーネントと一緒に読み込まれている場合でも、埋め込みコンポーネントを読み込もうとする可能性があります。

于 2017-01-05T08:37:23.450 に答える