首页 > 解决方案 > TypeError:无法读取未定义的属性“twoArgumentPooler”

问题描述

最近我们已将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)

如何解决此问题

标签: reactjsreact-nativejestjsreact-native-web

解决方案


你能展示你的笑话配置文件吗?我有一个类似的问题,结果我(手动)设置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;

这最终导致了与您得到的完全相同的错误,并通过正确定义重新映射器条目来解决,如下所示:

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

希望能帮助到你!如果不出意外,也许这将对将来的某人有所帮助!


推荐阅读