美文网首页
pnpm安装依赖,webpack版本过高,api找不到问题

pnpm安装依赖,webpack版本过高,api找不到问题

作者: 西叶web | 来源:发表于2023-08-02 02:05 被阅读0次

只做抛砖引玉之效,不为指定报错之解

环境

pnpm使用工作区管理

其中一个项目跑不起来,报错

TypeError: Cannot read properties of undefined (reading 'tapAsync')

ExternalModuleFactoryPlugin.js:59 ExternalModuleFactoryPlugin.apply
[qiankun]/[webpack@5.75.0]/[webpack]/lib/ExternalModuleFactoryPlugin.js:59:39

报错原因:

webpack 中 normalModuleFactory.hooks.factorize.tapAsync 这句出问题

factorize是undefined造成调用失败

找出问题过程

找到项目用到wepack的依赖包

可以执行 pnpm ls --depth=1 分析依赖关系

发现,我的 sass-loader peer 了 webpack@5.75.0

然后看 sass-loader 的 peerDependencies 是 "webpack": "^4.36.0 || ^5.0.0"

发现版本还是差挺远的

或者可以去根目录node_modules看.pnpm里,webpack到底有几个

我的就只有一个webpack@5.75.0

很有理由怀疑是这个问题

(可以测试用yarn安装测试一下再启动,yarn会给我装webapck@4.46.0,运行也没问题)

所以可以得出结论是webpack版本问题

最终解决

sass-loader由^8.0.2 固定为 8.0.0

原因是 8.0.0 的 peerDependencies 为 "webpack": "^4.36.0"

他会指定使用^4.36.0版本

换了8.0.0,.pnpm 下也会 多出一个 webpack的版本

也就是原有的webpack@5.75.0 加上新增的 webpack@4.46.0

相关文章

网友评论

      本文标题:pnpm安装依赖,webpack版本过高,api找不到问题

      本文链接:https://www.haomeiwen.com/subject/lviupdtx.html