混合默认和命名导入

Posted

技术标签:

【中文标题】混合默认和命名导入【英文标题】:Mixed up default and named imports 【发布时间】:2019-07-26 23:55:06 【问题描述】:

我正在尝试将相机与 React Native 一起使用,但我的导入似乎搞砸了,我不知道为什么。 根据类似的帖子,似乎没有正确完成从相机的导出,但我不想修改 react-native-camera 源代码。

我试图同时导入

import Camera from 'react-native-camera';

import Camera from 'react-native-camera';

但我得到同样的错误:

Invariant Violation:Invariant Violation:元素类型无效:预期为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。

知道如何解决这个问题吗? 我仍然想使用 react-native-camera 库而不是编辑它。

感谢您的任何建议!

【问题讨论】:

您在哪里看到表明Camerareact-native-camera 导出的组件的文档?我找不到此文档。 【参考方案1】:
export  RNCamera, FaceDetector ;

这是来自 react-native-camera,它没有默认导出,所以你的两个导入都不起作用

也许你正在寻找

import  RNCamera  'react-native-camera';

【讨论】:

如果你拼命将它命名为Camera无论出于何种原因你都可以这样做:import RNCamera as Camera 'react-native-camera';

以上是关于混合默认和命名导入的主要内容,如果未能解决你的问题,请参考以下文章

如何从 ES6 模块导入默认和命名

React Redux Firebase - 您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入

next.js + expo:您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入

您可能忘记从其定义的文件中导出组件,或者您可能混淆了默认导入和命名导入

为啥导出/导入默认 ES 模块属性比命名模块属性更快?

将 CommonJS 默认导出导入为命名导出/无法加载 ES 模块