如何解决React Native中的“ TypeError:未定义不是对象(正在评估'_reactNativeCamera.default.constants')”错误?

时间:2019-05-04 12:46:57

标签: android react-native react-native-camera

我正在尝试在我的项目中使用“ React-native-camera”库。实际上,我已经完成了50多次,并且每次在Mac和Linux系统上都一切正常。

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

enter image description here

我已经检查了所有配置步骤here 我尝试将缺少的DimensionStrategy'react-native-camera','general'添加到应用程序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 个答案:

答案 0 :(得分:4)

这里有三个问题:

首先,导入应类似于:

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的官方文档中查看这些常量的更新替代方案。

答案 1 :(得分:0)

我找到了此链接,可能对您有所帮助(对我有用): Issue #1288 react-native-camera

您应该这样导入:

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

不是这样

import Camera from 'react-native-camera';