【问题标题】:Having problem with import in ES6 module: property is not exported在 ES6 模块中导入有问题:属性未导出
【发布时间】:2020-01-20 18:13:57
【问题描述】:

我目前正在使用 redux,并且正在将具有类型属性的对象导出到我的 reducer 文件中。

我的 types.js 文件:

const Types = {LOG_IN:'LOG_IN',REGISTER:'REGISTER'};
export default Types;

我的 reducer.js 文件:

import {LOG_IN,REGISTER} from './types';
//CODE HERE

但是,当我编译时,CRA 给我一个错误:

Attempted import error: 'LOG_IN' is not exported from './types'.

奇怪的是,这段代码有效:

import Types from './types';
const {LOG_IN,REGISTER} = Types;

为什么我的代码结构不适用于这种导入形式,而 React 和 Redux 的代码却可以?提前谢谢你。

【问题讨论】:

    标签: javascript reactjs ecmascript-6 redux es6-modules


    【解决方案1】:

    您需要为每个常量显式定义一个命名导出才能正常工作。

    export const LOG_IN = 'LOG_IN';
    export const REGISTER = 'REGISTER';
    

    导入命名导出与解构默认导出不同,当您执行此操作时会发生这种情况:

    import Types from './types';
    const {LOG_IN,REGISTER} = Types;
    

    您可以read more on this here。您在野外发现的其他代码可能看起来像您描述的那样工作,因为它实际上是这样定义其导出的:

    module.exports = {
      LOG_IN: 'LOG_IN'
    }
    

    【讨论】:

      【解决方案2】:

      我认为是因为你导出Types,如果你可以使用LOG_IN,例如你需要访问Types.LOG_IN,以及代码const {LOG_IN,REGISTER} = Types; 之所以有效,是因为您使用的是解构

      import Types from './types';
      

      正确

      然后尝试使用Types.REGISTER访问

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-29
        • 1970-01-01
        • 2018-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多