前端npm install報錯too many levels of symbolic links解決辦法

2020年1月7日16:33:17 3 8,948 ℃

在Linux環(huán)境通過Jenkins構建前端項目,只要執(zhí)行npm install安裝模塊以后,就會報錯:

node_modules/webpack/node_modules/@webassemblyjs/helper-module-context/node_modules/@webassemblyjs/ast/node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/wast-printer/node_modules/@webassemblyjs/ast/node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/wast-printer/node_modules/@webassemblyjs/ast/node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/wast-printer/node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/wast-printer/node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/wast-printer/node_modules/@webassemblyjs/wast-parser -- too many levels of symbolic links

這個報錯會導致服務器CPU持續(xù)飆高,直到Jenkins內(nèi)存溢出以后,才會正常。

分析原因主要是npm install 安裝的時候模塊會創(chuàng)建軟連接,然后模塊之間相互引用,而這個軟連接又是使用的相對路徑,導致某些文件夾深度是死循環(huán),從而會耗盡Jenkins的堆內(nèi)存。

2018年就遇到了這個問題,由于并不是每次install都會出現(xiàn)這種問題,還能忍受,其次找遍了百度,沒有找到相關的處理方法。

最近又被這個問題困擾,一開始也只找到npm unlink之類的處理方法,此方法不太現(xiàn)實。

最后終于在谷歌找到一篇文章說了這個問題的解決方法,分享給遇到此問題的童鞋。

原因:npm默認會使用symbolic links來安裝組件,也即我們在linux系統(tǒng)里經(jīng)常用的軟鏈接(ln -s)或硬鏈接(ln),但是有些文件系統(tǒng)不支持文件鏈接,比如Windows(或者說出于安全原因禁用了),有時候linux系統(tǒng)運行在有windows分區(qū)的硬盤上也不支持鏈接,比如virtualbox在windows主機上默認禁止在共享文件夾里使用symbolic links。

解決辦法:在npm install的時候加上一個參數(shù),就是--no-bin-links,也即npm install --no-bin-links。(The --no-bin-links argument will prevent npm from creating symlinks for any binaries the package might contain.)或者全局設置npm config set bin-links false,這樣其他npm命令后面就不需要添加--no-bin-links。

【騰訊云】云服務器、云數(shù)據(jù)庫、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評論取消回復

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前評論:3   其中:訪客  0   博主  0

    • avatar porndodo 1

      不讓出門,只能刷刷博客了!

      • avatar PornDodo 1

        You’re great. Learn from you!

        • avatar PornDodo 1

          May the world be free from disease