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

Muh*_*baz 11 react-native react-native-image-picker

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

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

手机截图:

错误图像

这是我的代码:

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; 
Run Code Online (Sandbox Code Playgroud)

小智 18

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

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


cha*_*dev 8

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

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


AZI*_*ITH 6

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

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)
    }
  });
Run Code Online (Sandbox Code Playgroud)

阅读文档

  • 它之所以有效,是因为我们都找到并复制了包含“showImagePicker”的代码,但该方法在 3.xx 版本中不存在,因此,我们应该使用“launchImageLibrary”或“launchCamera”。 (2认同)