Creator3打包WebMobile 报错 Access to script at ‘chunks:///_virtual/xxxxx.ts‘ has been blocked by CORS

前言

Access to script at 'chunks:///_virtual/xxxxxxx.ts' from origin 'http://xxxxx:7456' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.

网上几乎没有这个报错的资料,相信很多人遇到了也是一脸懵逼。能查到的资料和cocos creator几乎无关。

分析

基本能看出,是某些文件,未能打包进入最终的包体导致的。

查看错误日志,可以发现,这些文件名是最近新加的功能,类似于编辑器使用,但是不需要在最终工程里面。

而这些文件,也是处于单独的文件夹,并不会被打入主包,或者子包bundles里。

解决方案一

给这些代码开一个bundles,确保会成一个独立的子包(除了代码不要包含其他文件,比如预制体prefab)

因此代码量小,而且没有单独的逻辑去加载,所以并不影响实际运行。

暴力一点,也可以把代码直接扔到主包里面去。

此方案包体会略微变大。

解决方案二

洁癖的做法,

写脚本,将在最终生成的文件里,删除这些试图加载特殊ts的函数。

找到build/web-mobile/assets/main/index.xxxxxx.js

注意xxxxx每次不一样(勾选了md5)所以这个脚本,还得智能一点。

然后脚本在此文件里

找到

System.register("chunks:///_virtual/xxxxx.ts",

....

});

注意xxxx就是需要删除的类,这一段全部删除

然后找到这一段

System.register("chunks:///_virtual/main", ['./xxxxx.ts',

....

});

将对应的类名删除。

注意不是删除所有,仅删除需要的几个  './xxxx.ts'

以上内容可以通过正则匹配来查找对应的代码,进行删除。

然后重新一跑,就ok了。

这个错误信息: ``` Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway. qtcreator: symbol lookup error: /usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/libqsqlite.so: undefined symbol: sqlite3_column_table_name16 ``` 说明你在启动 **Qt Creator** 时遇到了两个问题: --- ### 🔴 问题一:`undefined symbol: sqlite3_column_table_name16` 这是关键错误,导致 Qt Creator **无法启动**。 #### ❓ 原因分析: `libqsqlite.so` 是 Qt 的 SQLite 数据库驱动插件。它调用的是系统中的 `libsqlite3` 库。 但你的系统中安装的 SQLite 库 **缺少符号 `sqlite3_column_table_name16`**,这通常是因为: - 系统 SQLite 版本太旧(比如 Ubuntu 20.04 自带的版本) - 或者该函数在某些编译配置下被禁用(如 `SQLITE_ENABLE_COLUMN_METADATA` 未定义) > `sqlite3_column_table_name16()` 是一个可选 API,只有在 SQLite 编译时启用了 `SQLITE_ENABLE_COLUMN_METADATA` 宏才存在。 而你使用的 Qt 是通过官方安装器安装的(静态链接或依赖特定 SQLite 行为),但它期望这个符号存在,结果找不到 → 报错退出。 --- ### ✅ 解决方案 #### ✅ 方法一:使用 Qt 官方自带的插件(推荐) 如果你是通过 **Qt 官方在线安装器** 安装的 Qt(路径类似 `/home/yourname/Qt/...`),那么你应该**不要使用系统自带的 Qt 插件**,而是使用 Qt 安装目录下的完整环境。 ⚠️ 错误做法: ```bash /usr/bin/qtcreator # 这是系统包管理器安装的,容易出问题 ``` ✅ 正确做法:使用你自己安装的 Qt Creator ```bash ~/Qt/Tools/QtCreator/bin/qtcreator.sh ``` 或者根据你的安装路径调整,例如: ```bash /home/$USER/Qt/Tools/QtCreator/bin/qtcreator ``` > ⚠️ 如果你已经用 `sudo apt install qtcreator` 安装了系统的 Qt Creator,建议卸载它以避免混淆: > > ```bash > sudo apt remove qtcreator > sudo apt autoremove > ``` 这样就不会加载 `/usr/lib/x86_64-linux-gnu/qt5/plugins/...` 下有问题的插件,而是使用 Qt 安装目录内的干净插件。 --- #### ✅ 方法二:重新编译 Qt 的 SQLite 插件(高级用户) 如果你必须使用系统 Qt 环境,可以自己重新编译 `libqsqlite.so`,确保它不依赖 `sqlite3_column_table_name16`。 步骤简述: 1. 安装构建依赖: ```bash sudo apt install build-essential qtbase5-dev libsqlite3-dev ``` 2. 创建测试项目编译自定义插件(略复杂,一般开发者不推荐) 👉 更简单的方法是绕过这个问题 —— 使用官方 Qt Creator。 --- #### ✅ 方法三:设置环境变量禁用 SQL 插件(临时 workaround) 你可以尝试禁止 Qt 加载数据库插件来跳过此错误(仅用于测试能否启动): ```bash export QT_PLUGIN_DISABLE=1 ~/Qt/Tools/QtCreator/bin/qtcreator.sh ``` 但这会禁用所有插件(包括样式、图像格式等),不推荐长期使用。 --- ### 🟡 警告信息:`Ignoring XDG_SESSION_TYPE=wayland` 这不是致命错误,只是提示: > GNOME 当前运行在 Wayland 上,但 Qt 默认仍使用 X11 平台插件(xcb)。如果你想让 Qt 应用跑在 Wayland 上,需手动指定平台。 #### 可选解决方案: 启动 Qt Creator 时强制使用 Wayland: ```bash QT_QPA_PLATFORM=wayland ~/Qt/Tools/QtCreator/bin/qtcreator.sh ``` 或者回退到 X11 模式(更稳定): - 注销 - 登录时点击齿轮图标 → 选择 “Ubuntu on Xorg” 或 “GNOME on Xorg” X11 对大多数 Qt 应用兼容性更好。 --- ### ✅ 总结解决步骤(推荐流程) ```bash # 1. 卸载系统版 qtcreator(防止冲突) sudo apt remove qtcreator # 2. 使用官方安装器安装 Qt(已做则跳过) chmod +x qt-unified-linux-x64-online.run ./qt-unified-linux-x64-online.run # 3. 启动官方 Qt Creator ~/Qt/Tools/QtCreator/bin/qtcreator.sh # 或添加别名方便使用 echo 'alias qtcreator="~/Qt/Tools/QtCreator/bin/qtcreator.sh"' >> ~/.bashrc source ~/.bashrc ``` 之后就不会再遇到 `libqsqlite.so` 的符号错误。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值