#cordova #ionic-framework #ionic2 #ionic3 #cordova-plugins
#cordova #ionic-framework #ionic2 #ionic3 #cordova-плагины
Вопрос:
При установке плагина я получаю следующую ошибку.
Installing "cordova-plugin-canvas" for android
Error during processing of action! Attempting to revert...
Failed to install 'cordova-plugin-canvas': TypeError [ERR_INVALID_ARG_TYPE]: Uh oh!
The "path" argument must be of type string. Received type undefined
at assertPath (path.js:39:11)
at Object.join (path.js:1155:7)
at install (Users/xx/yy/zz/platforms/android/cordova/lib/pluginHandlers.js:61:29)
at ActionStack.process (/Users/xx/yy/zz/node_modules/cordova-common/src/ActionStack.js:56:25)
at PluginManager.doOperation (/Users/xx/yy/zz/node_modules/cordova-common/src/PluginManager.js:114:20)
at PluginManager.addPlugin (/Users/xx/yy/zz/node_modules/cordova-common/src/PluginManager.js:144:17)
at /Users/xx/yy/zz/platforms/android/cordova/Api.js:212:74
at _fulfilled (/Users/xx/yy/zz/node_modules/q/q.js:854:54)
at /Users/xx/yy/zz/node_modules/q/q.js:883:30
at Promise.promise.promiseDispatch (/Users/xx/yy/zz/node_modules/q/q.js:816:13)
Uh oh!
The "path" argument must be of type string. Received type undefined
cordova —version
8.1.2 (cordova-lib@8.1.1 )
кажется, в line18
pluginHandlers.js модуль импорта
var path = require('path');
Но на line 61
'resource-file': {
install: function (obj, plugin, project, options) {
var dest = path.join('app', 'src', 'main', obj.target);
обрабатывает его как строку. Как мне исправить эту проблему?
Любые теги файлов ресурсов, подобные приведенным ниже в plugin.xml предотвращает установку плагина.
<resource-file src="src/android/app/src/main/assets/FAsolid.ttf" target-dir="assets/FAsolid.ttf"/>
Ответ №1:
у меня были похожие проблемы, и, оказывается, мне нужно было заменить
<resource-file src="..." target-dir="assets/..."/>
Для
<source-file src="..." target-dir="..."/>
Комментарии:
1. Я хотел написать файл ресурсов без src. Мне пришлось использовать config-file : S
<config-file target="res/values/strings.xml" parent="/*">
Ответ №2:
По моим выводам, это исключение может возникать всякий раз, когда возникают проблемы с разрешениями на доступ к папкам, которыми управляет npm, и в ubuntu есть множество мест: /usr/local/lib
, /usr/local/bin
, /usr/local/share
, ~/.npm
, ~/.cordova
и даже больше. Если вы выполните сборку в самой среде, есть шанс получить соответствующую папку, для которой не хватает разрешения.
Тем не менее, после долгой игры с ним я обнаружил, что реальная проблема связана с util.js
file under /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/util.js
, а проблема заключалась в следующей строке: global_config_path = path.join(HOME, '.cordova');
Этот код выполняется только в том случае CORDOVA_HOME
, если переменная среды не существует. Итак, я только что добавил его: export CORDOVA_HOME="~/.cordova"
и исключение исчезло. Надеюсь, это кому-то поможет.