Ошибка Cordova из-за версии 8.0 Аргумент «path» должен иметь тип string . Полученный тип не определен

#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" и исключение исчезло. Надеюсь, это кому-то поможет.