npm install错误:rollbackFailedOptional

Bip*_*sai 52 node.js npm react-native

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

rollbackFailedOptional:动词npm-session 585aaecfe5f9a82

node --version
8.4.0

npm --version
5.3.0
Run Code Online (Sandbox Code Playgroud)

cwt*_*uan 46

试试这个

npm config rm proxy
npm config rm https-proxy
Run Code Online (Sandbox Code Playgroud)

  • 可以解释吗?没有为我解决 (3认同)
  • 我也为我工作,但你知道这个命令做了什么,为什么它有效?我想知道我是否需要安装一些东西.谢谢! (2认同)
  • 它对我不起作用,直到我还运行了“npm config setregistry http://registry.npmjs.org/” (2认同)

anv*_*rik 29

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

    # then this
    > npm config set registry http://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

解决了我的问题。

  • 解释这些信息,对我来说也不起作用。 (3认同)
  • 对我来说,需要使用 `https://registry.npmjs.org/` (注意 https) (3认同)
  • 不幸的是,这并没有解决我的问题。我只是在一个简单的家庭网络上,没有代理,我已经有很长一段时间断断续续地出现此错误,有时当我使用 VS Code 时,我可以打开 cmd 提示符(非 VS Code)并且它可以工作,但不能在IDE。我刚刚卸载了 NodeJS,删除了 AppData 中的所有 npm 文件夹,重新安装后仍然出现此错误。 (3认同)
  • 对于那些想知道解释的人:这将简单地删除您可能设置的任何代理,并将注册表(找到包的位置)设置回其默认值。因此,只有当您以某种方式错误配置其中任何一个时,这才会对您有所帮助(并且像我一样忘记了它) (2认同)

miq*_*qrc 16

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

proxy=http://yourorganizationproxy.com:8080
https-proxy=http://yourorganizationproxy.com:8080
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人.


lam*_*bda 14

原因可能是您当前的NPM注册表.尝试检查.npmrc文件.这些可以在不同的位置:

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

在这些中可以有类似的东西

registry=https://mycustomregistry.example.org
Run Code Online (Sandbox Code Playgroud)

它将优先于默认的one(http://registry.npmjs.org/).您可以在文件中删除此行或使用默认注册表:

npm <command> --registry http://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

  • 运行`npm config set set注册表http:// registry.npmjs.org /`在配置代理设置后为我工作 (2认同)

Lui*_*ero 12

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

npm config delete registry
Run Code Online (Sandbox Code Playgroud)

这将恢复到默认状态。


Ano*_*ame 11

npm无法访问npm注册表。检查npm代理配置

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

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

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

http://wpad.[yourcompany.domain]/wpad.dat
Run Code Online (Sandbox Code Playgroud)

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

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

PROXY <host:port>;
Run Code Online (Sandbox Code Playgroud)

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

npm config set proxy http://[host]:[port]
Run Code Online (Sandbox Code Playgroud)

npm config set https-proxy http://[host]:[port]
Run Code Online (Sandbox Code Playgroud)

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

npm config set proxy http://my.proxy.com:8080
npm config set https-proxy http://my.proxy.com:8080
Run Code Online (Sandbox Code Playgroud)

当我告诉npm使用哪个代理开始工作后,我便可以运行安装命令而不会出现问题。

感谢以下文章,以帮助您找到wpad文件。


Ani*_*nil 5

我尝试了以下选项来解决这个问题,它奏效了。

  1. 卸载 Node.js 版本 8。
  2. 安装 Node.js 版本 6.11.4
  3. 使用注册表选项和命令来安装任何软件包。

例如,我使用以下命令安装 express。

npm install express --registry http://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

或者

npm install express -g --registry http://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

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

C:\Sample1\Example1> npm install /Sample/Example1 express --registry http://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

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

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

C:\Sample\Example1> npm init
Run Code Online (Sandbox Code Playgroud)

上面的命令将创建package.json文件。无需提供任何数据。只需点击进入。

注意:如果您在防火墙后面,那么您可能需要设置代理。