由于8.0而导致的Cordova错误“ path”自变量必须为字符串类型。接收类型未定义

时间:2019-04-08 09:31:55

标签: cordova ionic-framework ionic2 ionic3 cordova-plugins

安装插件时出现以下错误。

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)

似乎 pluginHandlers.js line18导入模块

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"/>

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,结果我不得不替换

<resource-file src="..." target-dir="assets/..."/>

<source-file src="..." target-dir="..."/>

答案 1 :(得分:0)

根据我的发现,只要文件夹npm正在管理的权限有问题并且ubuntu上有很多位置,就会引发该异常:/usr/local/lib/usr/local/bin/usr/local/share,{{ 1}},~/.npm甚至更多。如果您要在环境本身中执行构建,则有机会获得缺少权限的相关文件夹。

但是,在玩了很多之后,我发现实际的问题出在~/.cordova下的util.js文件,问题出在以下行:/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/util.js

仅在global_config_path = path.join(HOME, '.cordova');环境变量不存在的情况下执行此代码。因此,我刚刚添加了它:CORDOVA_HOME,但异常消失了。 希望能对某人有所帮助。