【问题标题】:global install of npm generates “ELOOP: too many symbolic links” error (network user)全局安装 npm 生成“ELOOP: too many symbolic links”错误(网络用户)
【发布时间】:2021-04-24 01:40:40
【问题描述】:

环境:Windows 10,网络用户,npm@6.14.8,node@12.20.0

重新创建的步骤:全局安装任何 npm 包或全局更新 npm。

这个问题很相似,其实和这个SOF question一样。

这是终端中的错误消息。我正在复制粘贴另一个问题的错误消息和日志。值完全相同。我们俩都是网络用户:

$ npm update -g
npm ERR! code ELOOP
npm ERR! syscall stat
npm ERR! path \\fs2.my.company.com\Home\
npm ERR! errno -62
npm ERR! ELOOP: too many symbolic links encountered, stat '\\fs2.my.company.com\Home\'

npm ERR! A complete log of this run can be found in:
npm ERR!     \\fs2.my.company.com\Home\MyAccount\AppData\Roaming\npm-cache\_logs\2020-12-09T17_30_03_007Z-debug.log

这里是引用的日志文件:

0 info it worked if it ends with ok
1 verbose cli [
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   'update',
1 verbose cli   '-g'
1 verbose cli ]
2 info using npm@6.14.8
3 info using node@v14.15.1
4 verbose npm-session a666bee41aec0454
5 verbose update computing outdated modules to update
6 verbose stack Error: ELOOP: too many symbolic links encountered, stat '\\fs2.my.company.com\Home\'
6 verbose stack     at eloop (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:58:17)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:19:11)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
6 verbose stack     at realpathCached (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-tree\realpath.js:39:10)
7 verbose cwd C:\Users\MyAccount
8 verbose Windows_NT 10.0.17763
9 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "update" "-g"
10 verbose node v14.15.1
11 verbose npm  v6.14.8
12 error code ELOOP
13 error syscall stat
14 error path \\fs2.my.company.com\Home\
15 error errno -62
16 error ELOOP: too many symbolic links encountered, stat '\\fs2.my.company.com\Home\'
17 verbose exit [ -62, true ]

我的猜测是由于我是网络 ActiveDirectory 用户而出现问题。解决方案是覆盖 npmrc 中 npm 的缓存和前缀。我发现我的 npmrc 文件位于“C:\Program Files\nodejs\node_modules\npm\npmrc”。

所以我在这个 npmrc 文件中写入了新的缓存和前缀值:

prefix=C:\Program Files\nodejs\node_modules\npm
cache=C:\Program Files\nodejs\npm-cache

该位置没有“npm-cache”文件夹。我认为这里的缓存位置是错误的。我从:this SOF answer 得到这个。我也在尝试cache=\\company.com\users\username\AppData\Roaming\npm-cache

我收到一个新的权限错误:

$ npm install node-windows -g
npm ERR! code EPERM
npm ERR! syscall mkdir
npm ERR! path C:\Program Files\nodejs\node_modules\npm\node_modules\.staging
npm ERR! errno -4048
npm ERR! Error: EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs\node_modules\npm\node_modules\.staging'
npm ERR!  [OperationalError: EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs\node_modules\npm\node_modules\.staging'] {
npm ERR!   cause: [Error: EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs\node_modules\npm\node_modules\.staging'] {
npm ERR!     errno: -4048,
npm ERR!     code: 'EPERM',
npm ERR!     syscall: 'mkdir',
npm ERR!     path: 'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\.staging'
npm ERR!   },
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: 'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\.staging',
npm ERR!   parent: 'node-windows'
npm ERR! }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.

因此,操作系统不允许我在 C:\Program Files\nodejs\node_modules\npm\node_modules 中创建“.staging”文件夹。

我确定缓存和前缀路径的值有误。我认为 npmrc 的位置是正确的。

感谢任何帮助。提前谢谢你。

【问题讨论】:

    标签: node.js npm windows-10


    【解决方案1】:

    我也遇到了同样的问题。最后,对我有用的是将缓存和前缀位置更改为我的本地 AppData 文件夹。为此,我执行了以下步骤

    1. 将 npm-cash 文件夹从 Active directory AppData 文件夹复制到我的本地 AppData 文件夹 (C:\Users\AppData\Roaming)

    2. 创建一个 Empty 文件夹并将其重命名为 npm

    3. 使用记事本编辑 nprc 文件(与管理员权限一起使用) C:\Program Files\nodejs\node_modules\npm

      prefix=C:\Users\<username>\AppData\Roaming\npm \
      cache=C:\Users\<username>\AppData\Roaming\npm-cache
      
    4. 使用以下命令更改缓存的全局值和前缀Reference

      > npm config set cache C:\Users\<username>\AppData\Roaming\npm-cache --global
      > npm config set prefix C:\Users\<username>\AppData\Roaming\npm --global
      

    这些步骤对我有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 1970-01-01
      • 2011-08-24
      • 2021-11-21
      相关资源
      最近更新 更多