【问题标题】:ELOOP: too many symbolic links encounteredELOOP:遇到太多符号链接
【发布时间】:2020-11-21 08:56:08
【问题描述】:

尝试点击命令时:npm install -g @angular/cli@6.1.1

注意: 我有 Node.Js LTS 10.xx 版本、.Net Framework 4.7.2 开发包,以及所有必要的扩展。

抛出错误:

npm ERR! code ELOOP
npm ERR! syscall stat
npm ERR! path \\horofs**\users$\
npm ERR! errno -62
npm ERR! ELOOP: too many symbolic links encountered, stat '\\horofs06\users$\'

npm ERR! A complete log of this run can be found in:
npm ERR!     \\horofs**\users$\W****\AppData\Roaming\npm-cache\_logs\2020-07-31T13_26_25_468Z-debug.log

日志指出:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'install',
1 verbose cli   '-g',
1 verbose cli   '@angular/cli@6.1.1' ]
2 info using npm@6.14.6
3 info using node@v10.22.0
4 verbose npm-session 8b2e687260b66580
5 silly install loadCurrentTree
6 silly install readGlobalPackageData
7 http fetch GET 200 https://registry.npmjs.org/@angular%2fcli 282ms (from cache)
8 silly pacote version manifest for @angular/cli@6.1.1 fetched in 426ms
9 verbose stack Error: ELOOP: too many symbolic links encountered, stat '\\horofs**\users$\'
9 verbose stack     at eloop (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:58:17)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:19:11)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
9 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
10 verbose cwd C:\Cqe\Periscope\src\Periscope\Endava.Periscope.Web
11 verbose Windows_NT 6.3.9600
12 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "@angular/cli@6.1.1"
13 verbose node v10.22.0
14 verbose npm  v6.14.6
15 error code ELOOP

请帮帮我。

【问题讨论】:

    标签: node.js angular npm


    【解决方案1】:

    我遇到了类似的问题,日志如下,

    error ELOOP: too many symbolic links encountered, chmod '/Users/myname/projects/my-electron-app/node_modules/electron/cli.js'
    error ELOOP: too many symbolic links encountered, open '/Users/myname/projects/my-electron-app/node_modules/electron/npm-shrinkwrap.json'
    

    当我检查我的文件夹并发现文件夹 electron 链接到自身时,它导致了一个永无止境的循环。

    lrwxr-xr-x    1 myname  staff      8 Feb 20 11:42 electron@ -> electron
    

    我检查了大小并直接删除了文件,然后再次使用npm install electron。终于成功了。

    所以请检查链接,看起来您的应用程序中的文件也链接到自身。

    我怀疑这应该是关于npm 的问题,因为npm 试图在文件实际下载之前创建一个链接。

    【讨论】:

      【解决方案2】:

      由经典克雷格回答

      您可以在下面自行判断。令人失望的情况是,当您的用户数据存储在包含超过 2,000 个子文件夹的文件夹中时,您可能无法使用 NodeJS。像您一样,我的用户文件夹存储在网络驱动器上而不是 C: 在“readGlobalPackageData()”中,self.where 的值被传递给 readPackageTree。在我的例子中,self.where = "[domain]\users$[office location][userID]\AppData\npm." realpathCached() 中的代码正在退出该路径并尝试读取所有子文件夹。当它到达“[domain]\users$”时,会记录“ELOOP”错误,因为最大深度为 2000,而我公司的 Users 文件夹有超过 25,000 个子文件夹。

      我也无法在我公司大型机上的用户文件夹中全局安装 Angular。我通过在本地安装它来解决这个问题。

      首先我用

      初始化了安装位置
      npm init
      

      通过访问 node_modules 中的目录,我访问了 .bin 文件夹

      cd ../node_modules/.bin
      

      ng 命令可以在 .bin 文件夹中运行。然后我使用 ng new 在 .bin 文件夹中创建了一个新项目。然后,我可以使用

      npm run ng <command>
      

      这里。所以我可以在项目文件夹中使用 ng 命令。

      【讨论】:

        【解决方案3】:

        您可以在下面自行判断。令人失望的情况是,当您的用户数据存储在包含超过 2,000 个子文件夹的文件夹中时,您可能无法使用 NodeJS。 像您一样,我的用户文件夹存储在网络驱动器上,而不是 C: 在“readGlobalPackageData()”中,self.where 的值被传递给 readPackageTree。就我而言,self.where = "\[domain]\users$[office location][userID]\AppData\npm." realpathCached() 中的代码正在退出该路径并尝试读取所有子文件夹。当它到达“\[domain]\users$”时,会记录“ELOOP”错误,因为最大深度为 2000,而我公司的用户文件夹有超过 25,000 个子文件夹。

        这里有两种可能的解决方案: 首先,从 install 命令中删除 -g 以使安装本地到新应用程序的文件夹。不利的一面是,如果其中一个依赖项有更新,则必须在不使用 -g 的任何地方手动安装它。如果更新包含重大更改,那就太好了。

        其次,我不推荐此解决方案,即编辑其中一个安装程序文件。安装程序正在读取您的用户文件夹中的所有 ID 文件夹,它只是因为达到了任意限制而失败。如果您增加限制,错误应该会消失,但您也会让脚本读取您网络上的所有用户 ID。尝试此操作需您自担风险。 打开这个文件: C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js。 在第 18 行“if (depth > 2000)”中,将 2000 更改为大于您的 users$(共享)文件夹下的文件夹数的数字。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-26
          • 2015-07-14
          • 1970-01-01
          • 2021-10-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多