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

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

环境

pnpm使用工作区管理

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

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

ExternalModuleFactoryPlugin.js:59 ExternalModuleFactoryPlugin.apply
[qiankun]/[[email protected]]/[webpack]/lib/ExternalModuleFactoryPlugin.js:59:39

报错原因:

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

factorize是undefined造成调用失败

找出问题过程

找到项目用到wepack的依赖包

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

发现,我的 sass-loader peer 了 [email protected]

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

发现版本还是差挺远的

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

我的就只有一个[email protected]

很有理由怀疑是这个问题

(可以测试用yarn安装测试一下再启动,yarn会给我装[email protected],运行也没问题)

所以可以得出结论是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的版本

也就是原有的[email protected] 加上新增的 [email protected]

你可能感兴趣的:(pnpm安装依赖,webpack版本过高,api找不到问题)