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

  • 时间:2025-11-29 21:13 作者: 来源: 阅读:3
  • 扫一扫,手机访问
摘要:只做抛砖引玉之效,不为指定报错之解 环境 pnpm使用工作区管理 其中一个项目跑不起来,报错 TypeError: Cannot read properties of undefined (reading tapAsync ) ExternalModuleFactoryPlugin.js:59 ExternalModuleFactoryPlugin.apply [qiankun]/[webpa

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

环境

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

  • 全部评论(0)
手机二维码手机访问领取大礼包
返回顶部