Cordova打包后白屏,控制台报错找不到cordova.js怎么办?

程序员海淇 阅读 3

我用Cordova开发了一个简单的App,本地浏览器测试没问题,但打包成Android APK安装后打开就是白屏。

连上Chrome DevTools看了下,控制台报错:Uncaught ReferenceError: cordova is not defined,而且network里根本没加载到cordova.js这个文件。明明在index.html里写了引用啊,路径是<script src="cordova.js"></script>,这不应该自动注入吗?

试过重新cordova platform remove android再加回来,也clean过项目,还是不行。是不是哪里配置漏了?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
程序员丹丹
这问题太经典了,十个Cordova新手九个会遇到。

先说重点,cordova.js 这玩意儿确实会自动注入,但前提是你的项目结构和配置得对。它不是你手动放进去的,是打包时 Cordova 自动往 platforms/android/app/src/main/assets/www/ 目录里塞的。

前端这块排查起来也不难,几个常见坑你对照下:

第一个,路径问题。你的引用写法 <script src="cordova.js"></script> 是对的,千万别手贱写成 ./cordova.js 或者 /cordova.js,加个斜杠就找不到人了。相对路径和绝对路径在这里区别很大,打包后的文件结构跟本地开发不一样。

第二个,index.html 的位置。确认你的 index.html 是在项目根目录的 www 文件夹里,不是别的什么地方。而且 config.xml 里面的 <content src="index.html" /> 要跟实际文件名对应上,大小写都得一致,Linux 环境下可是区分大小写的。

第三个,CSP策略。这个坑死人,很多人不知道。检查一下你的 index.html 头部有没有 <meta http-equiv="Content-Security-Policy"> 标签,如果配置不当会直接拦截 cordova.js 的加载。可以先临时删掉这行测试一下,确认是这个问题再慢慢调策略。

第四个,打包不完整。有时候 cordova platform remove android 再 add 回来确实能解决一些玄学问题,但前提是你得确保 remove 干净了。直接删掉 platformsplugins 两个目录,然后重新跑:

cordova platform add android
cordova build android


第五个,看看打包产物。打包完成后去 platforms/android/app/src/main/assets/www/ 目录瞅一眼,cordova.js 要是在那里,说明注入成功了。要是没有,那就是 Cordova 版本或者环境有问题,建议升级或者重装 Cordova CLI。

最后提一句,本地浏览器测试时 cordova.js 找不到是正常的,毕竟浏览器环境没有 Cordova 运行时。你可以加个判断兼容一下:

document.addEventListener('DOMContentLoaded', function() {
if (typeof cordova !== 'undefined') {
document.addEventListener('deviceready', function() {
console.log('Cordova ready');
// 你的初始化逻辑
}, false);
} else {
console.log('Browser mode');
// 浏览器调试逻辑
}
}, false);


基本就这些,90%的情况都是路径或者CSP的问题,仔细排查下。
点赞
2026-03-01 22:02