Cordova CLI - After update, any and all commands fail with "Error: Parameter 'url' must be a string, not undefined"
Cordova CLI - After update, any and all commands fail with "Error: Parameter 'url' must be a string, not undefined"
我使用 sudo npm update -g cordova
更新了 cordova
更新后,我无法使用任何 CLI 命令来准备、构建或运行我的任何项目。
我收到以下错误
Error: Parameter 'url' must be a string, not undefined
我尝试在 Whosebug 上搜索帮助,但可用的解决方案对我不起作用。
我试过再次更新,并再次安装特定版本但没有效果。
剩下的唯一步骤是卸载 cordova 和 npm 并重新安装,但如果有人有更好的解决方案,请提供帮助。
感谢您的帮助:)
更新 nodejs、npm 或(尤其是)cordova 后遇到上述错误消息的任何人。
解决方案是使用 cordova create <projectname>
创建一个新的 cordova 项目,然后安装您正在构建的插件和平台。
下一步是复制 config.xml 首选项(仅首选项,配置的精确副本在我的情况下不起作用)和 www 文件夹内容。
我什至尝试卸载 nodejs、npm、cordova,然后以随机顺序单独重新安装它们,结果却让事情变得更糟。
我的特定问题的答案是 cordova 识别项目根文件夹的方式。逻辑是......令人费解的。就我而言,我的 Documents
文件夹中有一些垃圾文件夹,包括一个来自非常旧的 cordova 项目的 www
文件夹。我清除了当前项目中的 platforms
文件夹,这导致 cordova 上升到一个目录并使用我文档文件夹中 www
文件夹中的垃圾 config.xml。
底线:运行 cordova info
查看正在加载的 config.xml
数据,您可能会感到惊讶。
问题是白名单的 config.xml 语法。而不是 uri
你应该使用 origin
:
<access uri="*" />
应该是:
<access origin="*" />
- 做一个
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
添加回您的平台。
你可以开始了。无需创建新项目。
好的,因为我在尝试修复导致问题的代理错误时无意添加了这一行:
<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
删除此行使其生效
我使用 sudo npm update -g cordova
更新后,我无法使用任何 CLI 命令来准备、构建或运行我的任何项目。
我收到以下错误
Error: Parameter 'url' must be a string, not undefined
我尝试在 Whosebug 上搜索帮助,但可用的解决方案对我不起作用。
我试过再次更新,并再次安装特定版本但没有效果。 剩下的唯一步骤是卸载 cordova 和 npm 并重新安装,但如果有人有更好的解决方案,请提供帮助。
感谢您的帮助:)
更新 nodejs、npm 或(尤其是)cordova 后遇到上述错误消息的任何人。
解决方案是使用 cordova create <projectname>
创建一个新的 cordova 项目,然后安装您正在构建的插件和平台。
下一步是复制 config.xml 首选项(仅首选项,配置的精确副本在我的情况下不起作用)和 www 文件夹内容。
我什至尝试卸载 nodejs、npm、cordova,然后以随机顺序单独重新安装它们,结果却让事情变得更糟。
我的特定问题的答案是 cordova 识别项目根文件夹的方式。逻辑是......令人费解的。就我而言,我的 Documents
文件夹中有一些垃圾文件夹,包括一个来自非常旧的 cordova 项目的 www
文件夹。我清除了当前项目中的 platforms
文件夹,这导致 cordova 上升到一个目录并使用我文档文件夹中 www
文件夹中的垃圾 config.xml。
底线:运行 cordova info
查看正在加载的 config.xml
数据,您可能会感到惊讶。
问题是白名单的 config.xml 语法。而不是 uri
你应该使用 origin
:
<access uri="*" />
应该是:
<access origin="*" />
- 做一个
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
添加回您的平台。
你可以开始了。无需创建新项目。
好的,因为我在尝试修复导致问题的代理错误时无意添加了这一行:
<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
删除此行使其生效