ELOOP:遇到太多符号链接

时间:2020-07-31 13:45:36

标签: node.js angular npm

在尝试点击命令时:function loop(begin, end, results) { setTimeout(() => { for (var i = begin; i <= end; i++) { console.log(i); } results(); }, Math.random() * 1000) } function BeginPromise() { const p1 = new Promise((resolve, reject) => { loop(0, 100, resolve) }); const p2 = new Promise((resolve, reject) => { loop(110, 200, resolve) }); const p3 = new Promise((resolve, reject) => { loop(210, 300, resolve) }); return Promise.all([p1, p2, p3]).then(() => console.log('done')) }

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

引发错误:

npm install -g @angular/cli@6.1.1

日志显示以下内容:

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

请帮助我。

3 个答案:

答案 0 :(得分: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 试图在实际下载文件之前创建链接。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

如经典克雷格的回答

<块引用>

您可以在下面自行判断。令人失望的情况是,当您的 User 数据存储在包含超过 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 命令。

相关问题