#reactjs #react-native #jestjs #react-native-web
Вопрос:
Недавно мы обновили react-native-web
пакет до последней версии 0.17.0
, С тех пор мы получаем проблему TypeError: Cannot read property 'twoArgumentPooler' of undefined
во время работы yarn test
Чтобы проанализировать эту проблему, мы просмотрели код, который реализован нашими разработчиками, но у нас не было ничего подобного twoArgumentPooler
, но он доступен в react-native-web
пакете в пути
at Object.<anonymous> (node_modules/react-native-web/dist/cjs/exports/Touchable/BoundingDimensions.js:19:46)
Как решить эту проблему
Ответ №1:
Можете ли вы показать свой конфигурационный файл jest? У меня была аналогичная проблема, и оказалось, что я (вручную) moduleNameMapper
неправильно настраивал. У меня было следующее:
moduleNameMapper: {
'react-native': 'react-native-web',
},
что, после выполнения тестов, фактически аннулировало импорт в строке 10 внутри react-native-web/dist/exports/Touchable/BoundingDimensions.js
(файл, упомянутый в вашей трассировке стека) и, безусловно, множество других импортных операций.
Этот
import PooledClass from '../../vendor/react-native/PooledClass';
var twoArgumentPooler = PooledClass.twoArgumentPooler;
превратился в это (обратите внимание на измененный и неправильный путь)
import PooledClass from '../../vendor/react-native-web/PooledClass';
var twoArgumentPooler = PooledClass.twoArgumentPooler;
В конечном итоге это привело к той же ошибке, что и у вас, и было устранено путем правильного определения записи remapper следующим образом:
moduleNameMapper: {
'^react-native
Надеюсь, это поможет! Если ничего другого, возможно, это поможет кому-то в будущем!
Надеюсь, это поможет! Если ничего другого, возможно, это поможет кому-то в будущем!
: 'react-native-web',
},