【问题标题】:Expo Constants package error relating to Expo Camera, relating to SDK 34与 Expo 相机相关的 Expo 常量包错误,与 SDK 34 相关
【发布时间】:2019-12-13 09:14:13
【问题描述】:

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

以下 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,
    });
  };

}

【问题讨论】:

  • 您是否尝试过以下方式导入常量import Constants from 'expo-constants';?因为在您的代码中,您正在执行以下操作import { Constants } from 'expo-constants';
  • 您的组件也称为Camera,您是从expo-camera 导入的。这可能会引起混乱,也许您应该将组件更改为 class MyCamera extends Component { ... }
  • 谢谢,我输入错了

标签: reactjs react-native expo


【解决方案1】:

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

尝试更改常量“不带花括号” 它应该可以工作

【讨论】:

  • 请提供更多信息以获取更多详细信息。
猜你喜欢
  • 2019-10-24
  • 2018-02-12
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
相关资源
最近更新 更多