Cordova+Nuxt3安卓APK加载资源失败:ERR_CONNECTION_REFUSED
解决Nuxt3 + Cordova安卓APK本地资源加载失败问题
核心原因
Nuxt3默认构建时会生成基于localhost的绝对资源路径,但Cordova安卓应用是通过file://协议加载本地文件,而非HTTP服务,所以导致localhost/_nuxt/资源请求被拒绝。
具体解决方案
1. 调整Nuxt3构建配置
在项目根目录的nuxt.config.ts中修改配置,确保资源路径为相对路径,并直接输出到Cordova的www目录:
export default defineNuxtConfig({ app: { baseURL: './', // 将所有资源路径改为相对路径 }, build: { outDir: 'www', // 让Nuxt构建产物直接输出到Cordova的www目录,无需手动复制 }, })
2. 修正Cordova config.xml配置
确保config.xml中的导航、访问权限适配本地文件加载:
<!-- 指向正确的入口文件 --> <content src="index.html" /> <!-- 允许访问本地文件系统 --> <allow-navigation href="file:///*" /> <access origin="*" /> <allow-intent href="*" /> <!-- 启用Android本地文件访问权限(Android 10+需要) --> <preference name="AndroidInsecureFileModeEnabled" value="true" />
3. 正确设置CSP元标签
在Nuxt项目根目录的app.html中添加兼容Cordova的CSP配置(避免手动修改index.html被构建覆盖):
<!DOCTYPE html> <html {{ HTML_ATTRS }}> <head {{ HEAD_ATTRS }}> {{ HEAD }} <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: content:;"> </head> <body {{ BODY_ATTRS }}> {{ APP }} </body> </html>
4. 规范构建流程
- 先执行Nuxt静态生成命令:
npx nuxt generate
- 再执行Cordova安卓打包命令:
cordova build android
验证调试
通过chrome://inspect调试时,查看资源请求路径是否变为file:///android_asset/www/_nuxt/xxx,如果是则配置生效。
内容的提问来源于stack exchange,提问作者Neberith
相关产品推荐
相关产品推荐

