如何在本机反应中修复“TypeError:未定义不是对象(评估'_reactNativeCamera.default.constants')”错误?

Posted

技术标签:

【中文标题】如何在本机反应中修复“TypeError:未定义不是对象(评估\'_reactNativeCamera.default.constants\')”错误?【英文标题】:How to fix "TypeError: undefined is not an object (evaluating '_reactNativeCamera.default.constants')" error in react native?如何在本机反应中修复“TypeError:未定义不是对象(评估'_reactNativeCamera.default.constants')”错误? 【发布时间】:2019-05-04 12:46:57 【问题描述】:

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

但现在突然之间,它不再在我的 Linux 系统上工作,并不断产生这个错误(虽然在 mac 上工作!)。

我已经检查了所有配置步骤here 我尝试将 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>
    );
  
;

【问题讨论】:

您找到解决方案了吗?我也有同样的问题... 还没有。我想我会用旧的好的 RNCamera 代替。 任何解决方案 @seijn import RNCamera from 'react-native-camera';然后使用 RNCamera ( this.camera = ref; ... 【参考方案1】:

这里有三个问题:

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

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/docshttps://react-native-community.github.io/react-native-camera/docs的官方文档中查看这些常量的更新替代方案

【讨论】:

【参考方案2】:

我找到了这个链接,可能对你有帮助(它对我有用): Issue #1288 react-native-camera

你应该像这样导入:

import RNCamera from 'react-native-camera';

不是这样的

import Camera from 'react-native-camera';

【讨论】:

我按照你的建议改变了,得到 ReferenceError : Can't find variable : Camera @Rickard 你是如何解决这个问题的? 只要更改Camera的每一个提及并开始使用RNCamera,它是同一个Object。

以上是关于如何在本机反应中修复“TypeError:未定义不是对象(评估'_reactNativeCamera.default.constants')”错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 pod install 错误 glog 太旧或缺少在 Windows 10 中反应原生 ios

如何修复反应导航从屏幕顶部移动我的组件?

带有两个键的导航在本机反应中不起作用

如何在本机反应中为数组的每个元素分配相同的值。如何在本机反应中制作密钥对数组

反应本机错误:0308010C:数字信封例程::不支持

如何在本机反应中模拟上下文消费者反应元素