TypeError: SizeOnlySource is not a constructor

andu發表於2022-02-15

今天突然發現不能打包了,之前還是好好的,使用命令

npm install

後,然後打包

npm run watch-poll

出現錯誤:

C:\Users\Administrator\Code\Laravel\node_modules\webpack\lib\Compiler.js:756
cacheEntry.sizeOnlySource = new SizeOnlySource(size);
                             ^
TypeError: SizeOnlySource is not a constructor
    at updateFileWithReplacementSource (C:\Users\Administrator\Code\larabbs\node_modules\webpack\lib\Compiler.js:756:37)
    at updateWithReplacementSource (C:\Users\Administrator\Code\larabbs\node_modules\webpack\lib\Compiler.js:738:8)
    at processExistingFile (C:\Users\Administrator\Code\larabbs\node_modules\webpack\lib\Compiler.js:772:8)
    at C:\Users\Administrator\Code\larabbs\node_modules\webpack\lib\Compiler.js:841:10
    at callback (C:\Users\Administrator\Code\larabbs\node_modules\graceful-fs\polyfills.js:299:20)
    at FSReqCallback.oncomplete (node:fs:199:5)

找了好多遍,都沒發現原因,只得去看看原始碼,跟原來的好的比較,也沒發現,開啟資料夾,發現,我擦,少一部分?!
新的 \node_modules\webpack 資料夾裡少了一個 node_modules 資料夾


裡面是webpack的原始碼,TypeError: SizeOnlySource is not a constructor之所以沒有解析到,就是因為缺少了原始碼。拷貝過去,果然可以正常的打包npm run watch-poll,但是,一旦 npm install,這個原始碼資料夾就被更新掉消失了。

希望這個bug早點修復。

把檔案

package-lock.json

刪除,npm install 生成新的package-lock.json檔案後,再 npm install,就不會刪除原始碼資料夾了,相當於修復了。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章