我使用sudo npm update -g cordova
更新后,我无法使用任何CLI命令来准备,构建或运行任何项目。
我收到以下错误
错误:参数'url'必须是字符串,而不是未定义
我尝试搜索StackOverflow寻求帮助,但可用的解决方案对我不起作用。
我再次尝试更新,再次安装特定版本但没有效果。 剩下的唯一步骤是卸载cordova和npm并重新安装,但如果有人有更好的解决方案,请帮助。
感谢您的帮助:)
答案 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)
cordova plugin remove cordova-plugin-name
。如果显示有关cordova_plugins.js
文件的任何投诉,请执行cordova platform remove ios|android
(无论显示哪个平台)。如果这不起作用,请进入plugins
文件夹并删除插件文件夹及其在fetch.json
中的条目。cordova plugin add cordova-plugin-name
。cordova platform add ios|android
。你很高兴。无需创建新项目。
答案 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
删除此行使其正常工作