react native产生Haste module naming collision错误的原因和修复

项目中使用兄弟团队开发的一个组件库,组件库中的依赖包含了react-native,然后项目本身也依赖了react-native,一直相安无事。

当时今天重新下载项目代码进行依赖安装调试的时候。。。居然报错了,错误信息如下:

Loading dependency graph...(node:5756) UnhandledPromiseRejectionWarning: Error: jest-haste-map: Haste module naming collision:
  Duplicate module name: react-native

看错误信息,是react-native冲突了,使用npm ls命令查看项目中react-native的版本:

npm ls react-native
显示:
├─┬ xxxxxx@3.1.78
│ └── react-native@0.59.9  deduped
└── react-native@0.59.10

原来是安装了2个不同版本的react-native造成的错误。

为什么突然会出现安装版本不一致的结果呢,立即去检查了package.json中react-native的安装信息:

"react-native": "^0.59.9",

原来是因为react-native使用了^,代表大版本(major verion),这样可能会安装到0.59.xx版本,然后导致安装了2个不同版本react-native版本。

解决办法1,手动去掉^:

"react-native": "0.59.9",

然后执行:

rm -rf node_modules package-lock.json
npm cache clean --force   
watchman watch-del-all
npm i
npm start -- --reset-cache

解决办法2

第一个安装成功后,把package-lock.json文件在git中提交,这样npm再次安装时会去读取package-lock中的npm源地址和固定的版本号,不会出现意外升级的问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容