Подтвердить что ты не робот

Для чего нужен файл cordova_plugins.json? Кордова просит его при инициализации

Я пытаюсь отладить, для чего используется файл cordova_plugins.json?

Я использую несколько плагинов, и я никогда не взаимодействовал с этим файлом. Я хочу выяснить, почему кордова делает запрос xhr для этого файла при инициализации.

Когда я смотрю на свою консоль, я все время вижу эту ошибку 404 каждый раз, когда тестирую свое приложение в Chrome и понимаю, почему этот файл необходим.

4b9b3361

Ответ 1

Похоже, что функция, введенная в Cordova 2.6.0, по крайней мере, я только что заметил в этой версии. На данный момент я не смог найти документацию, и у меня нет много деталей, но сейчас я решил проблему 404, добавляя в корневой каталог моего файла файл cordova_plugins.json.

Поскольку он ожидает действительный json файл, я добавил в файл следующий контент: "просто фиктивный файл, требуемый Cordova 2.6.0"

Ответ 2

Кажется, это проблема с информацией, как обсуждалось: здесь

Создание фиктивного 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(), решит проблему.

Ответ 3

Филипп Мадж из Adobe сказал в другом месте, что это связано с (до сих пор) частично реализованным инструментом плагинов. В будущих версиях Кордовы инструмент плагинов будет генерировать cordova_plugins.json.

В настоящее время он сказал, что это экономит, чтобы полностью игнорировать ошибку 404. Если вы чувствуете, что это влияет на ваше приложение, вы должны подать сообщение об ошибке с Кордорой.

[Обратите внимание: если вы добавите фиктивный файл самостоятельно, это может повлиять на интеграцию плагинов]

Ответ 4

i подтвердите ответ francis и отметим, что на 2.7, если вставлен фиктивный файл, иногда он запускает бесконечный цикл ошибки "processMessage failed: invalid message:" (строка cordova-2.7.0.js: 971). сохраняя ошибку 404, кажется, действительно безопаснее. (ref: https://groups.google.com/forum/?fromgroups#!topic/phonegap/slbvvtEw0aw)

Ответ 5

Этот файл представлял ошибку/свободный конец в предыдущих версиях Cordova/PhoneGap - и предлагаемое исправление nurieta разрешило (безобидную) ошибку, возникшую при ее отсутствии. Преемник этого файла теперь создан и обрабатывается Cordova/PhoneGap CLI полностью и находится в /myapp/platform/ # platform #/www/cordova_plugins.js

Нижняя строка - хотя файл sorta существует, все же это уже не проблема с Cordova 3.0.

Ответ 6

Я фактически издеваюсь над этим файлом как пустой json файл, содержимое которого: "{}" и "use cordova 2.6", похоже, исправляет проблемы. Не было уродливого 404 года, и кордова, казалось, работала нормально.

Изменить: вы можете удалить код, который выполняет запрос ajax, вместе с кордорой, и все будет работать нормально.

Ответ 7

Вы можете узнать об этом более подробно здесь.

Местоположение в SDK/XDK выглядит так: xdk-new\xdk\components\server\emulator\resources\cordova_plugins.json

Ответ 8

Используете ли вы Sencha Touch?

Вы можете проигнорировать ошибку, но если вы хотите упаковать приложение для iOS, вы не сможете. Я решил проблему, вернувшись к cordova-2.5.0.js.