使用cordova-plugin-googlemaps时出现plugin is not defined错误求助
我之前也踩过这个坑,别慌,咱们一步步排查解决:
先确认插件真的安装到位
打开项目根目录的终端,执行cordova plugin list,看看输出里有没有cordova-plugin-googlemaps。如果没找到,重新执行安装命令(记得替换成自己的密钥):cordova plugin add cordova-plugin-googlemaps --variable API_KEY_FOR_ANDROID="你的安卓密钥" --variable API_KEY_FOR_IOS="你的iOS密钥"安装过程别中断,留意有没有报错信息,有错误的话根据提示先解决安装问题。
必须等deviceready事件触发后再调用插件
这是最容易忽略的关键点!Cordova的所有插件都要等设备完全初始化才能调用,直接在页面加载时执行plugin.google.maps.Map.getMap()肯定会报错。把代码放到deviceready的回调里:document.addEventListener("deviceready", function() { // 这里才是调用插件的安全时机 var map = plugin.google.maps.Map.getMap(); }, false);检查目标平台是否正确添加并构建
执行cordova platforms list,确认你要运行的平台(Android/iOS)已经在列表里。如果没有,先添加平台:cordova platform add android # 或者 ios然后重新构建项目:
cordova build android(对应你的平台),确保插件和平台代码正确整合。清理缓存重新构建试试
有时候缓存会导致插件没正确加载,试试这套操作:- 移除平台:
cordova platform remove android(或ios) - 重新添加平台:
cordova platform add android - 重装插件:
cordova plugin add cordova-plugin-googlemaps --variable ... - 最后构建:
cordova build android
- 移除平台:
试试全局对象的完整写法
少数情况下,插件的全局对象需要用window.plugin才能访问,你可以在deviceready回调里先打印console.log(window.plugin),如果能看到内容,就把代码改成:var map = window.plugin.google.maps.Map.getMap();
如果以上步骤都试过还是不行,可以在控制台打印console.log(cordova.plugins),看看有没有googlemaps相关的条目,或者检查项目的plugins文件夹里是否存在cordova-plugin-googlemaps目录。
内容的提问来源于stack exchange,提问作者Rushi patel

