Как я могу исправить проблему при добавлении платформы Cordova? - PullRequest
0 голосов
/ 27 февраля 2019

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

Теперь я пытаюсь добавить платформы в этот проект Cordova.Я новичок в разработке мобильных приложений.

Если я добавляю платформы, такие как IOS, Android или Browser, я всегда получаю одно и то же сообщение об ошибке.

Cannot read property 'variables' of undefined

У меня Cordova "8.1.2 (cordova-lib@8.1.1)" установлена ​​через

sudo npm -g install cordova

При добавлении платформы появляется следующее сообщение об ошибке

TypeError: Cannot read property 'variables' of undefined
    at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/restore-util.js:322:57
    at Array.forEach (<anonymous>)
    at Object.installPluginsFromConfigXML (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/restore-util.js:318:28)
    at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/prepare.js:58:32
    at _fulfilled (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:854:54)
    at /usr/local/lib/node_modules/cordova/node_modules/q/q.js:883:30
    at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:816:13)
    at /usr/local/lib/node_modules/cordova/node_modules/q/q.js:624:44
    at runSingle (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:137:13)
    at flush (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:125:13)

Часть в файле "restore-util.js: 322: 57" выглядит следующим образом:

    // Check to see if pkg.json plugin(id) and config plugin(id) match.
    if (comboPluginIdArray.toString() !== pluginIdConfig.toString()) {
        // If there is a config plugin that does NOT already exist in
        // comboPluginIdArray, add it and its variables.
        pluginIdConfig.forEach(function (item) {
            if (comboPluginIdArray.indexOf(item) < 0) {
                comboPluginIdArray.push(item);
                var configXMLPlugin = cfg.getPlugin(item);
                comboObject[item] = configXMLPlugin.variables;
                modifiedPkgJson = true;
            }
        });
    }

Теперь я исправляю свою проблему:

  1. Удалить все установленные плагины из config.xml и package.json
  2. Удалить папку node_modules
  3. Удалить папки android, ios, browser из / platform
  4. Установить все плагины с помощью установки плагина cordova
  5. Запустить npm install
  6. По крайней мере, собрать платформы. Cordova Platform добавить

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

...