前端npm install報(bào)錯(cuò)too many levels of symbolic links解決辦法

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

在Linux環(huán)境通過(guò)Jenkins構(gòu)建前端項(xiàng)目,只要執(zhí)行npm install安裝模塊以后,就會(huì)報(bào)錯(cuò):

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

這個(gè)報(bào)錯(cuò)會(huì)導(dǎo)致服務(wù)器CPU持續(xù)飆高,直到Jenkins內(nèi)存溢出以后,才會(huì)正常。

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

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

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

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

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

解決辦法:在npm install的時(shí)候加上一個(gè)參數(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.)或者全局設(shè)置npm config set bin-links false,這樣其他npm命令后面就不需要添加--no-bin-links。

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

發(fā)表評(píng)論取消回復(fù)

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

目前評(píng)論:3   其中:訪客  0   博主  0

    • avatar porndodo 1

      不讓出門(mén),只能刷刷博客了!

      • avatar PornDodo 1

        You’re great. Learn from you!

        • avatar PornDodo 1

          May the world be free from disease