ES6模块中的导入有问题:属性未导出

时间:2020-01-20 18:13:57

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

我目前正在使用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的代码一起使用那种形式的导入?预先谢谢你。

2 个答案:

答案 0 :(得分:1)

我认为是因为您导出了 Types ,例如,如果tou可以使用 LOG_IN ,则您需要访问 Types.LOG_IN ,并且该代码 const {LOG_IN,REGISTER} =类型; 起作用是因为您正在使用解构

import Types from './types';

是正确的

然后尝试使用Types.REGISTER

进行访问

答案 1 :(得分: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'
}