开发者问题收集

如何修复 React Native 中的“TypeError:undefined 不是对象(评估‘_reactNativeCamera.default.constants’)”错误?

2019-05-04
5026

我正在尝试在我的项目中使用“React-native-camera”库。我已经这样做了 50 多次,每次在我的 Mac 和 Linux 系统上都一切顺利。

但现在突然间它不再在我的 Linux 系统上运行,并且不断生成此错误(但在 Mac 上可以运行!)。

在此处输入图像描述

我已检查了 此处 的所有配置步骤 我尝试将 missingDimensionStrategy 'react-native-camera'、'general' 添加到 app build.gradle 我尝试添加 maven {url " https://jitpack.io "} 和 maven {url " https://maven.google.com "} 到项目 build.gradle 我尝试从 .ideas 目录中删除 madules.xml 并重新启动 android studio,无论是否清除缓存。

仍然没有 这是我的启动相机模块的示例代码:

class CameraApp extends Component {
  constructor(props) {
    super(props);

    this.state = {
      path: null,
      uri: '',
      imageName: ''
    };
  }

  takePicture() {
    this.camera.capture()
      .then((data) => {
        console.log(data);  
      })
      .catch(err => console.error(err));
}

  renderCamera() {
    return (
      <View>
        <Camera
          ref={(cam) => {
            this.camera = cam;
          }}
          style={styles.preview}
          aspect={Camera.constants.Aspect.fill}
          captureTarget={Camera.constants.CaptureTarget.disk}
        >
          <TouchableHighlight
            style={styles.capture}
            onPress={this.takePicture.bind(this)}
            underlayColor="rgba(255, 255, 255, 0.5)"
          >
            <View />
          </TouchableHighlight>
        </Camera>
      </View>
    );
  }


  render() {
    return (
      <View style={styles.container}>
        {this.renderCamera()}
      </View>
    );
  }
};
2个回答

这里有三个问题:

首先 ,导入应该是这样的:

import {RNCamera as Camera}  from 'react-native-camera';

其次 constants 的首字母必须大写: Constants

第三 Aspect.fillCaptureTarget.disk 都不再是 Constants 的一部分。因此,您应该删除以下两行:

  aspect={Camera.constants.Aspect.fill}
  captureTarget={Camera.constants.CaptureTarget.disk}

您可以在官方文档中查看这些常量的更新替代方案: https://react-native-community.github.io/react-native-camera/docs

Muhammad Altabba
2020-02-06

我找到了这个链接,也许对你有帮助(对我有用): 问题 #1288 react-native-camera

你应该像这样导入:

import { RNCamera } from 'react-native-camera';

不是这样的

import Camera from 'react-native-camera';

fnaquira
2019-05-06