Ошибка в приложении Phonegap: неперехваченный модуль cordova/plugin_list уже определен

Я пытался решить многие проблемы после обновления с Phonegap 2 до Phonegap 3.3, но, похоже, не могу исправить эту проблему.

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

Вот ошибка, которая появляется в logcat в Eclipse:

[INFO:CONSOLE(79)] "Uncaught module cordova/plugin_list already defined", source: file:///android_asset/www/cordova.js (79)

Я знаю, что это какая-то странная проблема, связанная с природой Phonegap 3 (плагины были переработаны). И я думаю, что проблема заключается в импорте скрипта cordova_plugins.js, поскольку верхняя строка этого скрипта гласит:

cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [
{
    "file": "plugins/org.apache.cordova.file/www/DirectoryEntry.js",
    "id": "org.apache.cordova.file.DirectoryEntry",
    "clobbers": [
        "window.DirectoryEntry"
    ]
}, ...

И это единственное место, где я могу найти наличие списка cordova/plugin_list, как указано в ошибке.

Однако я не уверен в правильном способе решения этой проблемы. Я не использовал plugman для импорта своих плагинов, а вместо этого использовал команды CLI, описанные в API Phonegap 3.3.


person Gthoma2    schedule 02.01.2014    source источник
comment
Привет, я рекомендую вам не обновляться, создать новый проект с помощью Cordova из cli, также установить свои плагины с помощью cli и скопировать старый проект www в новый. Я думаю, что это убережет вас от многих ошибок. С уважением.   -  person JSG33kC0d3    schedule 09.01.2014


Ответы (3)


Одной из причин этой проблемы является импорт cordova_plugins.js в ваш HTML-файл.

Проверьте, так ли это у вас, и удалите его.

person grytrn    schedule 30.01.2014
comment
Спасибо, grytrn, это решило проблему для меня... Я мог бы поклясться, что мне нужен этот вызов cordova_plugins.js, но похоже, что мое приложение загружается нормально без него, и я больше не получаю сообщение об ошибке. - person Gthoma2; 01.02.2014
comment
В моем файле HTML нет файла cordova_plugins.js. Но я все еще вижу ту же проблему с моим проектом. Любая подсказка об этом @grytrn? - person Lohith Korupolu; 25.03.2014
comment
@LohithKrishna Я видел это исключение, когда пытался использовать плагины Cordova на удаленном сайте. Смотрите мой ответ в этой теме. Не знаю, у вас такая же ситуация или нет. stackoverflow.com/a/26551455/534495 - person sorin7486; 24.10.2014
comment
@LohithKrishna без подробностей я не могу помочь. - person grytrn; 09.03.2015
comment
Целая куча моих бед коренилась в этом. Отличный ответ, спасибо. - person GRY; 30.06.2015

Файл cordova.js автоматически загружает cordova_plugins.js.

Таким образом, еще один очевидный способ получить эту ошибку — дважды непреднамеренно разместить следующий код на своей странице.

<script type="text/javascript" src="cordova.js"></script> 

Я потерял часы из-за этой же ошибки только для того, чтобы понять, что добавил cordova.js вверху и внизу страницы.

person elMarquis    schedule 12.06.2014

Вы должны создать и развернуть любой проект/приложение phonegap, используя интерфейс командной строки Phonegap.

Чтобы создать любой проект, напишите следующую команду в командной строке:

$ phonegap create <path> <package_name> <project_name>

i.e.

$ phonegap create hello com.example.hello HelloWorld

Чтобы добавить любую платформу в свой проект:

cd <path_to_project>
$ phonegap build <platform>

i.e.

cd hello
$ phonegap build ios
$ phonegap build android

Чтобы добавить любую функцию плагина в ваш проект:

cd <path_to_project>
$ phonegap local plugin add <path_to_plugin>

i.e.

cd hello
$ phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git
person Bhavik Modi    schedule 30.01.2014