与Expo Camera有关的Expo Constants软件包错误,与SDK 34有关

时间:2019-08-05 20:12:14

标签: reactjs react-native expo

我收到一条消息,在运行我的应用程序时无法删除

  

以下API已移至单独的程序包并导入它们   不推荐使用“ expo”包中的常量:

     

使用以下方法将这些软件包的正确版本添加到您的项目中:

     

expo install expo-constants

     

如果“安装”未被识别为EXPO命令,请更新您的   expo-cli安装。

     

更改您的导入,以便他们使用特定的软件包而不是   “博览会”套餐:

     

import { Constants } from 'expo' -> import Constants from 'expo-constants'

我已经按照指示安装了必要的软件包,但是尝试在expo中使用相机软件包时仍然出现此错误

下面是我的相机组件代码

Camera.js

import React, { Component } from 'react';
import { View, StyleSheet, TouchableOpacity, Text,
Alert, Modal, } from 'react-native';
import * as Permissions from 'expo-permissions';
import { Camera } from 'expo-camera';
import { Constants } from 'expo-constants';
import { Entypo, MaterialIcons, MaterialCommunityIcons,
  SimpleLineIcons } from '@expo/vector-icons';
import { connect } from 'react-redux';

class Camera extends Component {
  static navigationOptions = {
    header: null
  }

  constructor(props) {
    super(props);
    this.state = {
      hasCameraPermission: null,
      type: Camera.Constants.Type.back,
      picture: null
    };
  }

  async componentDidMount() {
    const { status } = await Permissions.askAsync(Permissions.CAMERA);
    this.setState({ hasCameraPermission: status === 'granted' });
  }

  takePicture = async () => {
    if (this.camera) {
      console.log('');

      const photo = await this.camera.takePictureAsync({ base64: true });

      this.setState({
        foo: Math.random()
      });

      const formData = new FormData();
      formData.append('image', photo.base64);
      formData.append('type', 'base64');

      this.setState({
        picture: photo.uri,
        isCameraVisible: false
      });
    }
  };

  openCamera = () => {
    const { hasCameraPermission } = this.state;
    if (!hasCameraPermission) {
      Alert.alert('Error', 'No access to camera');
    } else {
      this.setState({ isCameraVisible: true });
    }
  };

  closeCamera = () => {
    this.setState({
      isCameraVisible: false
    });
  };

  flipCamera = () => {
    this.setState({
      type: this.state.type === Camera.Constants.Type.back
        ? Camera.Constants.Type.front
        : Camera.Constants.Type.back,
    });
  };

}

enter image description here

1 个答案:

答案 0 :(得分:0)

需要更正导入。 代码中的常量和相机导入不正确。

尝试更改常量“ 不使用花括号” 那应该就可以了