阿汤博客-承接中小企业服务器维护和网站维护,有意者可以联系博主!

前端npm install报错too many levels of symbolic links解决办法

运维问题 1339℃ 0评论

在Linux环境通过Jenkins构建前端项目,只要执行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持续飙高,直到Jenkins内存溢出以后,才会正常。

分析原因主要是npm install 安装的时候模块会创建软连接,然后模块之间相互引用,而这个软连接又是使用的相对路径,导致某些文件夹深度是死循环,从而会耗尽Jenkins的堆内存。

2018年就遇到了这个问题,由于并不是每次install都会出现这种问题,还能忍受,其次找遍了百度,没有找到相关的处理方法。

最近又被这个问题困扰,一开始也只找到npm unlink之类的处理方法,此方法不太现实。

最后终于在谷歌找到一篇文章说了这个问题的解决方法,分享给遇到此问题的童鞋。

原因:npm默认会使用symbolic links来安装组件,也即我们在linux系统里经常用的软链接(ln -s)或硬链接(ln),但是有些文件系统不支持文件链接,比如Windows(或者说出于安全原因禁用了),有时候linux系统运行在有windows分区的硬盘上也不支持链接,比如virtualbox在windows主机上默认禁止在共享文件夹里使用symbolic links。

解决办法:在npm install的时候加上一个参数,就是–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。

转载请注明:阿汤博客 » 前端npm install报错too many levels of symbolic links解决办法

喜欢 (0)or分享 (0)