npm install错误:rollbackFailedOptional

时间:2017-09-02 07:32:28

标签: node.js react-native npm

当我尝试npm install新包时,它会向我显示此错误:

  

rollbackFailedOptional:动词npm-session 585aaecfe5f9a82

node --version
8.4.0

npm --version
5.3.0

27 个答案:

答案 0 :(得分:35)

试试这个

npm config rm proxy
npm config rm https-proxy

答案 1 :(得分:11)

在我的情况下,我必须直接编辑.npmrc并手动添加代理设置。

proxy=http://yourorganizationproxy.com:8080
https-proxy=http://yourorganizationproxy.com:8080

希望这有助于某人。

答案 2 :(得分:10)

原因可能是您的current NPM registry。尝试检查.npmrc file。这些可以在不同的位置:

  • 每个项目的配置文件(/path/to/my/project/.npmrc
  • 每用户配置文件(~/.npmrc
  • 全局配置文件($PREFIX/etc/npmrc
  • npm builtin配置文件(/path/to/npm/npmrc

在这些内容中可能存在类似

的内容
registry=https://mycustomregistry.example.org

优先于默认值(http://registry.npmjs.org/)。您可以在文件中删除此行,也可以使用默认注册表:

npm <command> --registry http://registry.npmjs.org/

答案 3 :(得分:3)

我尝试了以下选项来解决此问题,但它确实有用。

  1. 卸载Node.js版本8.
  2. 安装Node.js版本6.11.4
  3. 使用registry option和命令安装任何软件包。
  4. 例如安装express我使用了以下命令。

    npm install express --registry http://registry.npmjs.org/
    

    npm install express -g --registry http://registry.npmjs.org/
    

    如果要在任何特定文件夹中本地安装,请使用以下命令。下面的命令将在路径C:\Sample\Example1上安装express。

    C:\Sample1\Example1> npm install /Sample/Example1 express --registry http://registry.npmjs.org/
    

    注意:如果要在特定位置进行本地安装,请先使用命令转到该目录,然后运行上面的命令。如果您不在该目录中,并且仅在命令中提供无效的路径。

    如果您错过package.json错误,请在本地安装软件包之前运行以下命令

    C:\Sample\Example1> npm init
    

    以上命令将创建package.json文件。无需提供任何数据。刚刚进入。

    注意:如果您位于防火墙后面,则可能需要设置代理。

答案 4 :(得分:2)

就我而言,我将 npm set 注册表设置为 https://nexus,使用:

npm config delete registry

这将恢复到默认状态。

答案 5 :(得分:2)

    # first this
    > npm config rm proxy
    > npm config rm https-proxy

    # then this
    > npm config set registry http://registry.npmjs.org/

解决了我的问题。

答案 6 :(得分:2)

确保可以访问您在npm中配置的公司存储库。检查您的VPN连接。

否则将其重置回默认存储库,如下所示。

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

祝你好运!

答案 7 :(得分:2)

npm无法访问最有可能是npm注册表。检查npm代理配置

我在Windows Server 2008 R2上遇到了完全相同的问题。我最初怀疑Internet Explorer的增强安全性配置,但没有成功将其关闭后,问题出在,原因是npm未配置为使用我的公司代理连接到Internet。

事实证明,npm不使用通过Internet选项>连接选项卡>服务器设置为“自动检测设置”的LAN设置有效的代理设置。设置为自动检测设置并不能保证确实使用了代理,这仅意味着Windows在http://wpad.[yourdomain.com]/wpad.dat上找到特殊的“ wpad.dat”文件时,它将自动为Internet Explorer配置代理设置。

您可以通过在网络浏览器中键入以下内容来测试组织中是否正在使用wpad.dat文件。

http://wpad.[yourcompany.domain]/wpad.dat

如果没有文件可用,则可能您未使用组织范围的代理。如果确实返回浏览器,那么...

在此文件的底部,您应该看到一行显示

PROXY <host:port>;

如果您有多个代理,则可能会重复。需要主机和端口才能告诉npm使用代理设置,如下所示:

npm config set proxy http://[host]:[port]

npm config set https-proxy http://[host]:[port]

例如,如果您的代理位于端口8080上的my.proxy.com,则npm命令将为:

npm config set proxy http://my.proxy.com:8080
npm config set https-proxy http://my.proxy.com:8080

一旦我告诉npm哪个代理可以使用所有代理,我便可以毫无问题地运行安装命令。

感谢以下post为wpad文件发现提供帮助。

答案 8 :(得分:1)

如果您有权访问注册表但仍然发生错误,则上述任何内容都不起作用。我注意到这个问题仅适用于本地项目的安装(即如果你使用-g进行全局安装,一切正常)。

为我解决了什么问题:只需从项目的package.json文件中删除有关要安装的软件包的条目。之后,下一次调用npm将成功运行并安装包。

答案 9 :(得分:1)

您好,我也是新人做出反应,在遇到这么多麻烦之后我也遇到了这个问题我找到了解决方案:只需在您的命令提示符或终端中运行:

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

这将解决您的问题。 参考链接:http://blog.csdn.net/zhalcie2011/article/details/78726679

答案 10 :(得分:0)

试试这个:

删除文件夹中的所有文件:%APPDATA%\ npm-cache \ _locks

答案 11 :(得分:0)

似乎这个bug还没有修复[1]。有些人上班,有些人没有。我也没有工作。

我尝试使用命令npm cache verify清除缓存,然后再次运行install命令。我上班了。

[1]。 https://github.com/npm/npm/issues/17246

答案 12 :(得分:0)

尝试使用此处回答的所有命令来解决问题https://stackoverflow.com/a/54173142/12142401 如果问题仍然存在 执行以下步骤

完全卸载nodejs签出此答案以完全卸载nodejs https://stackoverflow.com/a/20711410/12142401

从他们的网站下载更新的nodejs设置 将其安装在任何驱动器中,而不要安装在先前安装的驱动器中,例如,如果您安装在C驱动器中,然后安装在D,S,G驱动器中 运行您的npm命令,它将完全正常运行

答案 13 :(得分:0)

在解决此问题之前,已进行了一段时间的努力。
我正在使用High Sierra(10.13.6)
多次卸载并重新安装了节点和nvm-使用installer.pkgHomeBrew,然后使用命令行。 IMO,命令行效果最好。

我遵循了以下步骤:
1.跑npm config ls -l
2.检查globalconfig的值是否为$<installpath>/.nvm/versions/node/v12.16.3/etc/npmrc,但是当我尝试在终端中到达此路径时,它给了我No such file or directory
所以我
3.创建文件夹etc,创建npmrc文件并在其中添加此行。

registry = "https://registry.npmjs.org/"


我的~/.npmrc中没有$HOME文件

然后
4.我重新运行了npm install命令。


请注意,这仍然引发了rollbackFailedOptional: verb npm-session错误,但这次完成了,尽管存在另一个错误。 您可以尝试这些步骤,看看是否可行。

对于那些好奇的人,它抛出了Response timeout while trying to fetch https://registry.npmjs.org/<package> (over 30000ms)错误,因此我将timeout = "60000"添加到了/etc/npmrc文件(在另一个Stackoverflow线程中找到),然后重试。这对我有用。

希望这会有所帮助!

答案 14 :(得分:0)

我已经按照如上所述设置了代理,并且一直有效到今天。事实证明,现在我需要在代理地址“ http:// {proxyURL}:{proxyPort}”前面加上“ http://”。然后终于奏效了。

答案 15 :(得分:0)

该矿井归因于McAfee防火墙。 它设置为“询问”模式,因此应该弹出提示询问是否可以连接互联网,但是没有! 进入McAfee并(暂时!)禁用防火墙使我得以安装。

答案 16 :(得分:0)

以下命令解决了我的问题:

npm config set proxy http://yourproxyurl.com:8080  (**you need to enter your or your company proxy URL**)

npm config set https-proxy http://yourproxyurl.com:8080

答案 17 :(得分:0)

您可以通过查看您的网络是否有代理来解决该问题,即禁止下载过程。我公司的网络启用了防火墙,这导致了我的问题。因此,我不得不切换到一个不安全的网络(可能是您的移动网络中的热点),这对我很有用。

答案 18 :(得分:0)

解决方案: npm config的“ proxy”和“ https-proxy”键的默认值为NULL。经过更多的研发之后,我尝试将代理设置值设置为上述键(此解决方案适用于我的情况)。

此外,需要在IE浏览器的Internet设置>>设置>> LAN设置中应用相同的代理设置。

结论: 在公司/某些环境中,代理是一种强制性设置,否则npm安装将无法进行。

在GitHub上的问题:https://github.com/SharePoint/sp-dev-docs/issues/3266

您可以参考博客以获取详细信息 https://blogs2share.blogspot.com/2019/01/spfx-environment-setup-error.html

答案 19 :(得分:0)

在安装Angular命令行工具(CLI)时,如果遇到回滚错误,则可能是由于您的网络与您正在工作的客户端网络或公司网络连接而导致的。

因此,请尝试在公共网络(或您的手机的热点网络)中安装CLI,那么您肯定会安装CLI。

答案 20 :(得分:0)

在极少数情况下,请检查是否可以使用常规npm命令来构建项目。我遇到了一个配置为与bower一起使用的程序,所以bower install <github_url>可以工作,而npm install <github_url>可以在所有平台上提供无用的隐式错误消息...

答案 21 :(得分:0)

我用PhpStorm创建React应用程序的效果相同。然后最后只说done。在终端中运行相同的命令给了我详细的错误。我创建的项目文件夹被命名为react,似乎不行。

确保您的项目文件夹未命名为react

答案 22 :(得分:0)

我设置了两个系统环境变量-

  1. HTTP_PROXY = <_proxy_url _>
  2. HTTPS_PROXY = <_proxy_url _>

这实际上对我有用。

答案 23 :(得分:0)

对于Windows: 再次运行安装程序,然后选择修复&#39;安装

为我工作

答案 24 :(得分:0)

我有同样的问题。但是通过从公司内部网络切换到访客网络,它可以正常运行。

答案 25 :(得分:-1)

在命令前使用sudo作为


sudo npm install

答案 26 :(得分:-2)

尝试一下。对我来说效果很好

npm install / your_floder_location package_name --registry http://registry.npmjs.org/

下面是我在laravel项目(我的项目名称为vue_laravel)中安装vue-router软件包的确切命令

aslam004:vue_laravel $ npm安装 / var / www / html / projects / vue_laravel vue-router --registry http://registry.npmjs.org/

祝你好运