Возникла проблема с импортом в модуль ES6: свойство не экспортируется - PullRequest
0 голосов
/ 20 января 2020

В настоящее время я работаю с redux и экспортирую объект со свойствами типа в мой файл редуктора.

Мои типы. js file:

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

Мой редуктор. js file:

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 ]

1 голос
/ 20 января 2020

Вам необходимо явно определить именованный экспорт для каждой константы, чтобы это работало.

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

Импорт именованного экспорта - это не то же самое, что деструктурирование экспорта по умолчанию, что происходит, когда вы делаете this:

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

Вы можете Подробнее об этом здесь . Другой код, который вы найдете в wild, может работать так, как вы описали, потому что он фактически определяет свой экспорт следующим образом:

module.exports = {
  LOG_IN: 'LOG_IN'
}
1 голос
/ 20 января 2020

Я думаю, это потому, что вы экспортируете Типы , если tou может использовать LOG_IN , например, вам нужно получить доступ к Types.LOG_IN и коду const {LOG_IN, REGISTER} = Типы; работает, потому что вы используете деструктурирование *1001*

import Types from './types';

верны

и затем попытайтесь получить доступ с помощью Types.REGISTER

...