如何修复React Native错误“ jest-haste-map:哈希模块命名冲突”?

时间:2019-01-28 18:39:52

标签: javascript node.js reactjs react-native jestjs

当我安装react-native-popup-menu时,我遇到了这样的错误。

这是错误代码

  

在以下位置查找JS文件
  E:\ react-native \ ............. \

     

正在加载依赖关系图...(节点:9460)   UnhandledPromiseRejectionWarning:错误:jest-haste-map:加速模块   命名冲突:重复的模块名称:react-native路径:   E:\ react-native \ ............. \ node_modules \ react-native-twitter-signin \ node_modules \ react-native \ package.json   与...碰撞   E:\ react-native \ ............. \ node_modules \ react-native \ package.json

     

此错误是由hasteImpl返回相同的名称引起的   不同的文件。       在setModule(E:\ react-native \ ............. \ node_modules \ jest-haste-map \ build \ index.js:551:17)       在workerReply(E:\ react-native \ ............. \ node_modules \ jest-haste-map \ build \ index.js:613:9)       在process._tickCallback(内部/进程/next_tick.js:68:7)(节点:9460)处UnhandledPromiseRejectionWarning:未处理的承诺   拒绝。该错误是由抛出异步内部引起的   没有捕获块或拒绝承诺   未使用.catch()处理。 (拒绝ID:2)(节点:9460)[DEP0018]   DeprecationWarning:已弃用未处理的承诺拒绝。在   未来,未处理的承诺拒绝将终止   使用非零退出代码的Node.js进程。 (节点:9460)   UnhandledPromiseRejectionWarning:错误:jest-haste-map:加速模块   命名冲突:重复的模块名称:react-native路径:   E:\ react-native \ ............. \ node_modules \ react-native-twitter-signin \ node_modules \ react-native \ package.json   与...碰撞   E:\ react-native \ ............. \ heybuddy \ node_modules \ react-native \ package.json

     

此错误是由hasteImpl返回相同的名称引起的   不同的文件。       在setModule(E:\ react-native \ ............. \ node_modules \ jest-haste-map \ build \ index.js:551:17)       在workerReply(E:\ react-native \ ............. \ node_modules \ jest-haste-map \ build \ index.js:613:9)       在process._tickCallback(内部/进程/next_tick.js:68:7)(节点:9460)处UnhandledPromiseRejectionWarning:未处理的承诺   拒绝。该错误是由抛出异步内部引起的   没有捕获块或拒绝承诺   未使用.catch()处理。 (拒绝ID:3)

我试图找到解决此错误的方法,但找不到任何解决方案。

3 个答案:

答案 0 :(得分:1)

我遇到了这个问题,我创建了源文件的备份并删除了所有内容。删除node_modules是不够的。取回文件并使用npm install软件包后,它就起作用了。

答案 1 :(得分:1)

我通过在文件夹的根目录中创建一个 metro.config.js 文件解决了这个问题:

module.exports = {
  resolver: {
    blacklistRE: /#current-cloud-backend\/.*/,
  },
};

答案 2 :(得分:0)

我通过在项目根文件夹中添加一个名为“ rn-cli.config.js”的新文件来解决该问题,其内容如下。

const blacklist = require('metro-config/src/defaults/blacklist');
module.exports = {
    resolver: {
        blacklistRE: blacklist([
            /node_modules\/.*\/node_modules\/react-native\/.*/,
        ])
    },
};