由于路径长度约束使用NPM 5.x,无法安装NPM软件包



我正在运行Windows 10,NPM V5.5.1和Node V8.9.1。

编辑:此后,我已更新为节点V8.9.4和NPM v5.6.0。问题保持不变。

我大约两个月前在这台机器上设置了我的开发环境。我正在使用Angular CLI来构建我的客户端应用。

一切都很好。我通过NPM添加了一些软件包,没有问题,例如Gulp和Ngx-Bootstrap。然后,我开始遇到某些软件包安装的错误。

错误是:

npm ERR! code PATH_LENGTH_EXCEEDED
npm ERR! errno PATH_LENGTH_EXCEEDED
npm ERR! request to https://registry/npmjs.org/{{package}} failed, reason: path length constraint exceeded
npm ERR! A complete log of this run can be found in:
npm ERR! {{npm_cache path}}_logs2018-02-08T14_43_40_856Z-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   'ngx-cookie-service',
1 verbose cli   '--save' ]
2 info using npm@5.5.1
3 info using node@v8.9.1
4 verbose npm-session d55be12849534a0a
5 silly install loadCurrentTree
6 silly install readLocalPackageData
7 silly fetchPackageMetaData error for ngx-cookie-service@latest request to https://registry.npmjs.org/ngx-cookie-service failed, reason: path length constraint exceeded
8 verbose type system
9 verbose stack FetchError: request to https://registry.npmjs.org/ngx-cookie-service failed, reason: path length constraint exceeded
9 verbose stack     at ClientRequest.req.on.err (C:Program Filesnodejsnode_modulesnpmnode_modulespacotenode_modulesmake-fetch-happennode_modulesnode-fetch-npmsrcindex.js:68:14)
9 verbose stack     at emitOne (events.js:116:13)
9 verbose stack     at ClientRequest.emit (events.js:211:7)
9 verbose stack     at TLSSocket.socketErrorListener (_http_client.js:387:9)
9 verbose stack     at emitOne (events.js:116:13)
9 verbose stack     at TLSSocket.emit (events.js:211:7)
9 verbose stack     at emitErrorNT (internal/streams/destroy.js:64:8)
9 verbose stack     at _combinedTickCallback (internal/process/next_tick.js:138:11)
9 verbose stack     at process._tickCallback (internal/process/next_tick.js:180:9)
10 verbose cwd C:Developmenttest
11 verbose Windows_NT 10.0.15063
12 verbose argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install" "ngx-cookie-service" "--save"
13 verbose node v8.9.1
14 verbose npm  v5.5.1
15 error code PATH_LENGTH_EXCEEDED
16 error errno PATH_LENGTH_EXCEEDED
17 error request to https://registry.npmjs.org/ngx-cookie-service failed, reason: path length constraint exceeded
18 verbose exit [ 1, true ]

我对此进行了研究,并找到了Windows 10文件路径260字符限制。我以为NPM版本3.1.0应该解决了此问题,但是我决定遵循此答案中的说明,因为尽管使用了NPMv5.5.1。

,我仍遇到了这个问题。 。

我发现我的Windows版本是在推出功能之前,可以使您禁用此限制。我更新到版本1703(OS构建15063.483(,并启用Win32长路径。

但是我仍会遇到错误,无法安装各种NPM软件包。

在测试中查看这是否是具有很多依赖关系的软件包的问题,我尝试安装或重新安装其他几个软件包。

有些错误失败了。其他人在以下警告中取得了成功:

npm WARN Unexepcted warming for https://registry.npmjs.org/: Miscellaneous Warning PATH_LENGTH_EXCEEDED: request to https://registry.npmjs.org/{{package name}} failed, reason: path length constraint exceeded
npm WARN Using stale package data from https://registry.npmjs.org/ due to a request error during validation

抛出错误的软件包包括:JSlintNGX-Cookie-Service图表角-CLI

发出警告的软件包包括:字体真是@Angular/CLI片刻NGX-Bootstrap引导程序茉莉

我怀疑在我的工作站的策略或我们的网络安全性中发生了任何变化,这导致了这种情况。成功的所有软件包似乎都是我先前安装的软件包,无论是直接安装,还是 @angular/cli的依赖项(我安装的第一个软件包之一(。我假设陈旧的软件包数据警告表明,我对路径长度的任何问题都在阻止检索到更新的数据,因此NPM从所选软件包及其依赖项的先前安装中降回了缓存的数据。

因此,现在我很想确切地诊断问题的发生地点。如果它的安全策略发生了变化,那么我需要能够准确描述被阻止的内容,以便我可以与安全部门合作解决此问题。但是,我能找到有关path_length_exceeded错误的唯一信息,这会使我获取有关3.1.0之前版本的旧信息。

如何识别此问题的来源?

额外搜索后,我发现对SSL/TLS证书局的路径长度超过路径长度。我通过更改NPM注册表来使用HTTP而不是HTTP来测试此问题(注意:这是A em emerary 步骤;一旦我验证了该问题,我就已经重新打开了HTTPS:

(:

npm config set registry http://registry.npmjs.org/

这使我能够安装有问题的软件包。

似乎根本原因是我们的网络安全团队执行的SSL检查。解密,检查和重新加密过程以及证书上的发行当局的随后更改显然触发了此错误。

最新更新