Cordova CLI - 更新后,任何和所有命令都失败,并显示“错误:参数'url'必须是字符串,而不是未定义”

时间:2015-12-05 10:43:21

标签: macos cordova command-line-interface

我使用sudo npm update -g cordova

更新了cordova

更新后,我无法使用任何CLI命令来准备,构建或运行任何项目。

我收到以下错误

  

错误:参数'url'必须是字符串,而不是未定义

我尝试搜索StackOverflow寻求帮助,但可用的解决方案对我不起作用。

我再次尝试更新,再次安装特定版本但没有效果。 剩下的唯一步骤是卸载cordova和npm并重新安装,但如果有人有更好的解决方案,请帮助。

感谢您的帮助:)

5 个答案:

答案 0 :(得分:3)

更新nodejs,npm或(特别是)cordova后遇到上述错误消息的任何人。

解决方案是使用cordova create <projectname>创建一个新的cordova项目,然后安装您正在构建的插件和平台。

下一步是复制config.xml首选项(仅限首选项,配置的完全副本在我的情况下不起作用)和www文件夹内容。

我甚至尝试卸载nodejs,npm,cordova并以随机顺序重新安装它们只会让事情变得更糟。

答案 1 :(得分:1)

问题是白名单的config.xml语法。您应该使用uri代替origin

<access uri="*" />

应该是:

<access origin="*" />

答案 2 :(得分:0)

我的特定问题的答案是cordova识别项目根文件夹的方式。逻辑......令人费解。就我而言,我的Documents文件夹中有一些垃圾文件夹,包括来自一个非常古老的cordova项目的www文件夹。我清除了当前项目中的platforms文件夹,导致cordova上升到一个目录并使用文档文件夹中www文件夹中的trash config.xml。

底线:运行cordova info以查看正在加载的config.xml数据,您可能会感到惊讶。

答案 3 :(得分:0)

  1. 做一个cordova plugin remove cordova-plugin-name。如果显示有关cordova_plugins.js文件的任何投诉,请执行cordova platform remove ios|android(无论显示哪个平台)。如果这不起作用,请进入plugins文件夹并删除插件文件夹及其在fetch.json中的条目。
  2. cordova plugin add cordova-plugin-name
  3. 使用cordova platform add ios|android
  4. 添加您的平台

    你很高兴。无需创建新项目。

答案 4 :(得分:0)

好的,因为我在尝试修复导致问题的代理错误时添加了这条线而没有任何意图:

 <access origin="*" />

在哪里?缺少属性href使其无法解析。然后导致错误

(node:3362) UnhandledPromiseRejectionWarning: TypeError: Parameter "url" must be a string, not undefined
    at Url.parse (url.js:103:11)
    at Object.urlParse [as parse] (url.js:97:13)
    at parseWhitelistUrlForATS (/platforms/ios/cordova/lib/prepare.js:1005:20)
    at /platforms/ios/cordova/lib/prepare.js:965:23

删除此行使其正常工作