Bahu
Bahu

Reputation: 1596

TypeError: Cannot read property 'twoArgumentPooler' of undefined

Recently we have upgraded the react-native-web package to latest version 0.17.0 From that time we are getting the issue TypeError: Cannot read property 'twoArgumentPooler' of undefined while running yarn test

enter image description here

To analyse this issue, gone through the code which is implemented by our developers but we didn't have anything like twoArgumentPooler but it's available in react-native-web package in the path

  at Object.<anonymous> (node_modules/react-native-web/dist/cjs/exports/Touchable/BoundingDimensions.js:19:46)

How to resolve this issue

Upvotes: 0

Views: 378

Answers (1)

Malte Hallstr&#246;m
Malte Hallstr&#246;m

Reputation: 13

Can you show your jest config file? I had a similar issue and it turned out that I was (manually) setting up the moduleNameMapper incorrectly. I had the following:

  moduleNameMapper: {
    'react-native': 'react-native-web',
  },

which, upon running the tests, effectively invalidated an import on line 10 inside react-native-web/dist/exports/Touchable/BoundingDimensions.js (the file mentioned in your stacktrace) and surely a lot of other imports.

This

import PooledClass from '../../vendor/react-native/PooledClass';
var twoArgumentPooler = PooledClass.twoArgumentPooler;

turned into this (notice the changed and incorrect path)

import PooledClass from '../../vendor/react-native-web/PooledClass';
var twoArgumentPooler = PooledClass.twoArgumentPooler;

This ultimately resulted in the exact same error as you got, and was resolved by correctly defining the remapper entry like this:

moduleNameMapper: {
    '^react-native$': 'react-native-web',
  },

Hope it helps! If nothing else, perhaps this will help someone in the future!

Upvotes: 1

Related Questions