Ionic 3,Angular CLI 7,Angular 5。
无法从库中获取图像。
它在调用getPicture时失败。我收到一个错误:
“对象(WEBPACK_IMPORTED_MODULE_1__ ion_native_core [”cordova“])不是函数。 (在'对象(WEBPACK_IMPORTED_MODULE_1__ ion_native_core [“cordova”])(这,“getPicture”,{“callbackOrder”:“reverse”},arguments)','Object(WEBPACK_IMPORTED_MODULE_1__ionic_native_core [“cordova”])'是Object的一个实例) ”
我已经尝试将所有本机插件放到版本5.0.0-beta.15但它没有帮助。
我已经尝试使用ImagePicker和Camera插件,但两者都给出了同样的错误。
ImagePicker(插件是@ ionic-native / image-picker):
let options = {
maximumImagesCount: 1
};
this.imagePicker.getPictures(options).then((results) => {
for (var i = 0; i < results.length; i++) {
this.imgPreview = results[i];
this.base64.encodeFile(results[i]).then((base64File: string) => {
this.regData.avatar = base64File;
}, (err) => {
});
}
}, (err) => { console.log(err); });
相机(该插件是@ ionic-native / camera):
var sourceType = this.camera.PictureSourceType.PHOTOLIBRARY;
var options = {
quality: 100,
sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,
saveToPhotoAlbum: false,
correctOrientation: true
};
this.camera.getPicture(options).then((imagePath) => {
console.log("Img path: " + imagePath);
if (this.platform.is('android') && sourceType === this.camera.PictureSourceType.PHOTOLIBRARY) {
this.filePath.resolveNativePath(imagePath)
.then(filePath => {
let correctPath = filePath.substr(0, filePath.lastIndexOf('/') + 1);
let currentName = imagePath.substring(imagePath.lastIndexOf('/') + 1, imagePath.lastIndexOf('?'));
});
} else {
var currentName = imagePath.substr(imagePath.lastIndexOf('/') + 1);
var correctPath = imagePath.substr(0, imagePath.lastIndexOf('/') + 1);
}
}, (err) => {
console.log(err);
});
有人可以帮帮我吗?
UPD:我将ImagePicker和Base64降级为与native-core相同的版本,它似乎开始工作了。但是当我试图从Ionic DevApp运行应用程序时,它一直告诉我应该将cordrik-imagepicker插件添加到cordova,但它已经在其列表中了! (是的,我确实尝试添加)。所以错误是“plugin_not_installed”。
UPD 2:我不得不离开这个项目,不幸的是我不知道解决方案是什么,因为我没有检查谢尔盖提出的想法
由于您使用的是Ionic 3.您需要确保根据文档安装和导入插件:
请注意这是Ionic 4:https://ionicframework.com/docs/native/image-picker
安装说明:
离子cordova插件添加cordova-plugin-telerik-imagepicker npm
安装@ ionic-native / image-picker
这是为了Ionic 3:
离子cordova插件添加cordova-plugin-telerik-imagepicker - 变量PHOTO_LIBRARY_USAGE_DESCRIPTION =“你的使用信息”npm install --save @ ionic-native / image-picker @ 4
请注意@ 4帮助npm为Ionic v3安装相关插件。
另请注意,import语句会有所不同:
Ionic 4有:
import { ImagePicker } from '@ionic-native/image-picker/ngx';
Ionic 3有:
import { ImagePicker } from '@ionic-native/image-picker';
要删除插件:
cordova插件列表
然后
cordova插件删除了PLUGIN_NAME
然后为您的框架版本安装适当的插件。
在阅读完答案后,似乎无法正确安装依赖项或在构建应用程序时缺少对它们的引用。乍一看,代码似乎是正确的。无论如何你需要将离子升级到版本4,因为它还看到离子v3在其他一些帖子中与相机有问题。 “离子3不支持那些插件”
这个问题有一个类似的问题,它通过再次安装适当的依赖版本https://stackoverflow.com/a/54436891/4229159得到修复
否则,如果你只是在一个由刮痕制作的小应用程序中隔离相机,它在V4中是否仍会产生相同的错误? (仅支持的版本)