Ionic Cordova报错Camera is not found,cordova-plugin-camera 6.0.0无法调用相机
Ionic Cordova相机插件"camera is not found"报错排查与解决方案
1 代码逻辑错误修正
你当前贴出的业务代码存在3处明显错误,是触发报错的高频原因:
sourceType参数赋值错误:你当前赋值为枚举对象Camera.PictureSourceType,而非有效的枚举值,正确赋值应为Camera.PictureSourceType.CAMERA(调用设备相机)或Camera.PictureSourceType.PHOTOLIBRARY(调用系统相册)- 冗余未定义参数:
popoverOptions未进行赋值直接传入配置项,会导致插件参数解析失败,不需要使用该配置项可直接删除 - 缺失核心调用逻辑:你仅定义了调用配置,未执行核心调用方法
navigator.camera.getPicture(),需补全对应逻辑
修正后的代码示例:
$scope.addImage = function () { // 前置校验插件是否加载完成 if (typeof Camera === 'undefined' || typeof navigator.camera === 'undefined') { alert('相机组件未加载完成,请稍后重试'); return; } logsFctry.logsDisplay('DEBUG', $scope.TagName, "Entered into addImage"); var options = { destinationType: Camera.DestinationType.FILE_URI, sourceType: Camera.PictureSourceType.CAMERA, mediaType: Camera.MediaType.PICTURE, allowEdit: false, encodingType: Camera.EncodingType.JPEG, cameraDirection: Camera.Direction.BACK, quality: 80, targetWidth: 800, targetHeight: 800, correctOrientation: true }; // 补全相机调用逻辑 navigator.camera.getPicture(onSuccess, onFail, options); // 拍照成功回调 function onSuccess(imageURI) { // 自行补充图片处理逻辑 } // 拍照失败回调 function onFail(message) { console.log('调用失败:', message); } }
2 插件与环境校验
如果修正代码后问题仍然存在,按以下步骤排查环境问题:
- 确认插件正确安装:执行命令
cordova plugin ls,检查输出中是否存在cordova-plugin-camera 6.0.0 "Camera",如果缺失重新执行安装命令:cordova plugin add cordova-plugin-camera@6.0.0 - 确认系统权限配置:
- Android端:检查
AndroidManifest.xml中是否配置相机权限<uses-permission android:name="android.permission.CAMERA" />,Android 12及以上版本需额外配置媒体读取权限<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> - iOS端:检查
Info.plist中是否配置相机使用说明NSCameraUsageDescription、相册使用说明NSPhotoLibraryUsageDescription,未配置权限描述iOS会直接拒绝插件调用
- Android端:检查
- 确认调用时机:所有Cordova插件调用必须在
deviceready事件触发之后执行,若在页面初始化阶段直接调用,插件未完成加载会找不到对应对象触发报错
3 运行时校验
- 在调用相机前打印
Camera、navigator.camera对象,若输出为undefined则说明插件未正常加载,回到第二步重新检查安装配置 - 检查App是否已获得用户授予的相机权限,若权限被用户拒绝,需先引导用户到系统设置中开启相机权限后再调用插件
内容的提问来源于stack exchange,提问作者Amitha Gandrakota
相关产品推荐
相关产品推荐

