类型错误:未定义不是一个对象评估'_reactNativeImagePicker.default.showImagePicker'

问题描述

使用 React Image Picker 我遇到了这个错误: TypeError: undefined is not an object (evaluating '_reactNativeImagePicker.default.showImagePicker')

当我点击图片选择器功能时会发生这种情况

手机截图:

Error Image

这是我的代码

import React from 'react';
import { View,Text,Button } from 'react-native';
import ImagePicker from 'react-native-image-picker';

const options = {
    title: 'Select Avatar',customButtons: [{ name: 'fb',title: 'Choose Photo from Facebook' }],storageOptions: {
      skipBackup: true,path: 'images',},};

function Picker(){
    const openPicker =()=>{
      ImagePicker.showImagePicker(options,(response) => {
        console.log('Response = ',response);
      
        if (response.didCancel) {
          console.log('User cancelled image picker');
        } else if (response.error) {
          console.log('ImagePicker Error: ',response.error);
        } else if (response.customButton) {
          console.log('User tapped custom button: ',response.customButton);
        } else {
          const source = { uri: response.uri };
      
          // You can also display the image using data:
          // const source = { uri: 'data:image/jpeg;base64,' + response.data };
      
          console.log(source)
        }
      });
    }
    return(
        <View>
            <Button onPress={openPicker} title="Open image picker"></Button>
        </View>
    )
}

export default Picker; 

解决方法

我遇到了同样的问题,这就是我解决它的方法。

import * as ImagePicker from "react-native-image-picker"

,

如果你的 react-native-image-picker 版本是 3.x.x 那么,用这些行替换上面的代码,

import {launchCamera,launchImageLibrary} from 'react-native-image-picker'; // Migration from 2.x.x to 3.x.x => showImagePicker API is removed.
...

const openPicker =()=>{
  launchCamera(options,(response) => { // Use launchImageLibrary to open image gallery
    console.log('Response = ',response);
  
    if (response.didCancel) {
      console.log('User cancelled image picker');
    } else if (response.error) {
      console.log('ImagePicker Error: ',response.error);
    } else if (response.customButton) {
      console.log('User tapped custom button: ',response.customButton);
    } else {
      const source = { uri: response.uri };
  
      // You can also display the image using data:
      // const source = { uri: 'data:image/jpeg;base64,' + response.data };
  
      console.log(source)
    }
  });

阅读docs

,

如果是 3x,请检查您的 lib 版本,然后尝试这样的操作

import * as ImagePicker from "react-native-image-picker"


                <Button onPress={() =>
                        ImagePicker.launchImageLibrary(
                          {
                            mediaType: 'photo',includeBase64: false,maxHeight: 200,maxWidth: 200,},(response) => {
                            console.log(response);
                            this.setState({resourcePath: response});
                          },)
                      }
                title="Select Image"/>
,

问题:
import ImagePicker from "react-native-image-picker"

解决方案:
import * as ImagePicker from "react-native-image-picker"