После перехода на Babel 7 при запуске тестов я получаю эту ошибку
TypeError: Cannot read property 'default' of undefined
для этой строки (например, файл index.js):
export { default } from './SearchInput';
Если файл SearchInput.jsx находится в той же папке и использует
export class SearchInput {}
синтаксис.
Это происходит только в тестах Jest (во время выполнения приложения работает).
Как я могу это исправить?
Обновлено:
Это моя конфигурация babel babel.config.js:
module.exports = function(api) {
api.cache.forever();
return {
presets: ['@babel/preset-env', '@babel/preset-react'],
plugins: ['@babel/plugin-proposal-class-properties'],
};
};
Кажется, что шутка не уважает plugins, потому что, когда я удалил static defaultProps и static propTypes и переместил их в SearchInput.defaultProps и SearchInput.propTypes, тесты заработали.
Я обновил вопрос с подсказкой - похоже, это как-то связано с плагинами babel
У меня такая же проблема. Мое приложение, похоже, работает нормально, но тест Jest завершился неудачно: «Не удается прочитать свойство 'default' of undefined». Вы нашли решение?
@dragonfly Я тоже столкнулся с точной проблемой. Удалось заставить его работать?
В конце концов, выяснилось, что у меня был цикл зависимостей, который было очень трудно обнаружить. Как только я реорганизовал по файлам, начал работать.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы, наверное, тоже забыли обновить babel-jest.
Note: If you are using babel version 7 you have to install babel-jest with
yarn add --dev babel-jest 'babel-core@^7.0.0-bridge' @babel/corehttps://github.com/facebook/jest/tree/master/packages/babel-jest
У меня все есть - большинство тестов проходит. Неисправные импортируют компоненты, которые экспортируются с использованием файлов index.js с export { default } from 'sthsth;.
Мне то же. Вы исправили это?
Я предполагаю, что default - это зарезервированное слово для экспорта по умолчанию, которого, похоже, нет ни в файле класса, ни в index.js.
Единственный способ, которым я мог это увидеть, - это если у вас есть циклы зависимостей, поэтому вы пытаетесь импортировать
SearchInputдо того, как он действительно станет доступен. Вам нужно будет сделать сокращенный пример вашей файловой структуры, который демонстрирует структуру папок, чтобы проверить.