Ionic3中LocationAccuracy报错Object(...) is not a function的解决方法
解决Ionic 3中LocationAccuracy插件的
TypeError: Object(...) is not a function错误 我一眼就看穿问题所在了——你在Ionic 3项目里用了适配Ionic 4+的@ionic-native/location-accuracy模块导入方式,版本不兼容才抛出了这个类型错误。下面是具体的修复步骤:
步骤1:卸载当前不兼容的npm包
先把你现在装的高版本@ionic-native/location-accuracy卸载掉,它是给Ionic 4+准备的:
npm uninstall @ionic-native/location-accuracy
步骤2:安装Ionic 3兼容的版本
Ionic 3对应的@ionic-native包是4.x版本(5.x及以上只支持Ionic 4+),执行以下命令安装适配版本:
npm install @ionic-native/location-accuracy@4
步骤3:修正导入路径
把所有文件(app.module.ts和你的顶层组件)里的导入语句改掉,去掉末尾的/ngx:
原来的错误导入:
import { LocationAccuracy } from '@ionic-native/location-accuracy/ngx';
改成:
import { LocationAccuracy } from '@ionic-native/location-accuracy';
步骤4:重新构建项目
修改完成后,重启你的开发服务或者重新构建项目:
ionic serve # 或者针对真机构建 ionic cordova build android # 或 ionic cordova build ios
补充说明
Ionic 3基于Angular 5/6,而带/ngx后缀的@ionic-native模块是为Angular 7+(对应Ionic 4+)设计的,两者的模块结构和注入方式完全不同,这就是你遇到Object(...) is not a function错误的核心原因。插件本身cordova-plugin-request-location-accuracy是没问题的,问题出在Ionic Native包装器的版本和导入路径上。
内容的提问来源于stack exchange,提问作者sembilanlangit
相关产品推荐
相关产品推荐

