У меня есть проект, который был разработан два года назад от другого разработчика.
Теперь я пытаюсь добавить платформы в этот проект 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;
}
});
}
Теперь я исправляю свою проблему:
- Удалить все установленные плагины из config.xml и package.json
- Удалить папку node_modules
- Удалить папки android, ios, browser из / platform
- Установить все плагины с помощью установки плагина cordova
- Запустить npm install
- По крайней мере, собрать платформы. Cordova Platform добавить
Я не уверен, возможно, некоторые устаревшие версии плагинов были установлены.Поэтому я переустанавливаю каждый плагин в проекте.Я работаю два дня с ionic, cordova / phonegap и думаю, что буду узнавать изо дня в день больше об этой теме.