web-dev-qa-db-ja.com

cordova_plugins.jsonファイルの目的は何ですか? Cordovaは初期化時にそれを要求しています

Cordova_plugins.jsonファイルの用途をデバッグしようとしていますか?

私はこれまで複数のプラグインを使用しており、このファイルを操作したことはありません。初期化時にcordovaがこのファイルに対してxhrリクエストを行う理由を理解したいと思います。

コンソールを見ると、Chromeでアプリをテストするたびにこの404エラーが表示され、このファイルが必要な理由を理解したいと思います。

33
Eric H

Cordova 2.6.0で導入された機能のように思えますが、少なくともこのバージョンでは気付いたところです。この時点ではドキュメントが見つかりませんでしたが、詳細はあまりありませんが、今は404問題を解決して、ダミーのcordova_plugins.jsonファイルをプロジェクトのルートに追加しました。

有効なjsonファイルを期待しているので、次のコンテンツをファイルに追加しました:「Cordova 2.6.0に必要なダミーファイル」

14
Felipe Plets

議論されているように、これは既知の問題のようです: here

ダミーのjsonファイルを作成しても問題は解決しませんでした...実際、cordova-2.7.0.jsの最後にあるこのコードチャンク全体を削除してください。

// Try to XHR the cordova_plugins.json file asynchronously.
try { // we commented we were going to try, so let us actually try and catch
    var xhr = new context.XMLHttpRequest();
    xhr.onload = function() {
        // If the response is a JSON string which composes an array, call handlePluginsObject.
        // If the request fails, or the response is not a JSON array, just call finishPluginLoading.
        var obj = this.responseText && JSON.parse(this.responseText);
        if (obj && obj instanceof Array && obj.length > 0) {
            handlePluginsObject(obj);
        } else {
            finishPluginLoading();
        }
    };
    xhr.onerror = function() {
        finishPluginLoading();
    };
    xhr.open('GET', 'cordova_plugins.json', true); // Async
    xhr.send();
}
catch(err){
    finishPluginLoading();
}

そして、finishPluginLoading()の呼び出しに置き換えて問題を解決します。

11

AdobeのFilip Maj氏は、これは(これまで)部分的に実装されたプラグインツールによるものであると述べています。 Cordovaの将来のバージョンでは、プラグインツールがcordova_plugins.json自体を生成します。

今のところ、彼は404エラーを完全に無視するのが救いだと言っています。アプリケーションに影響があると思われる場合は、Cordovaにバグを報告してください。

[ダミーファイルを自分で追加すると、プラグインの統合に影響する可能性があることに注意してください]

9
Black

私はフランシスの回答を確認し、2.7でダミーファイルが挿入された場合、エラー「processMessage failed:invalid message:」(line cordova-2.7.0.js:971)で無限ループを開始する場合があることに注意します。 404エラーを保持することは、実際に安全に思えます。 (参照: https://groups.google.com/forum/?fromgroups#!topic/phonegap/slbvvtEw0aw

6
netalex

このファイルは、以前のバージョンのCordova/PhoneGapのバグ/ルーズエンドを表しており、nurietaの提案された修正は、不在でスローされた(無害な)エラーを解決しました。このファイルの後継は Cordova/PhoneGap CLI によって完全に作成および処理され、/ myapp/platforms /#platform#/ www/cordova_plugins.jsに存在します。

結論-ファイルsortaは存在しますが、これはCordova 3.0の時点でもう問題ではありません。

2
Chris Emerson

実際に、このファイルを空のjsonファイルとしてモックします。コンテンツは「{}」で、-cordova 2.6を使用して-問題を修正しているようです。 404い404はなく、コルドバは正常に機能しているようでした。

編集:Cordovaからajaxリクエストをまとめて実行するコードを削除することができ、問題なく動作します。

1
nurieta

詳しくは こちら をご覧ください。

SDK/XDKの場所は次のとおりです:xdk-new\xdk\components\server\emulator\resources\cordova_plugins.json

0
Sascha Wedler