pnpm安裝依賴,webpack版本過高,api找不到問題

只做拋磚引玉之效,不為指定報錯之解

環境

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容