Ошибка типа: Не удается прочитать свойство «twoArgumentPooler» неопределенного

#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',
},
Надеюсь, это поможет! Если ничего другого, возможно, это поможет кому-то в будущем!