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

Having problem with import in ES6 module: property is not exported

我目前正在使用 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 的代码可以?提前谢谢你。

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

import Types from './types';

正确

然后尝试使用 Types.REGISTER

访问

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

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'
}