可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
My npm is getting stuck a lot, whether its npm install from package.json or individual packages.
Right now, I'm not even able to sudo npm install node-inspector -g
I'm using node 6.2.1
, npm 3.9.5
on ubuntu 16.04
npm cache clear
didnt help.
The installation takes hours or fails.
回答1:
Check if there any issues with proxies if you using any.
You can try also to set npm's endpoint manually:
npm config set registry="http://registry.npmjs.org"
回答2:
try yarn installer instead of npm:
sudo npm install -g yarn
yarn install
I found it much more resilient to such problems.
回答3:
I had this same problem, with several different installs hanging on fetchMetaData
, including the install of yarn
mentioned above. I am on a Mac
and solved it by updating npm
as follows:
npm install npm@latest -g
So if you are encountering this issue on Mac
, then try updating and see if it solves your problem.
回答4:
For me it was double temp directories in Windows.
Open a command prompt and type:
echo %TEMP%
You should receive path to a single directory. If you receive multiple directories (I received C:\Users\\AppData\Local\Temp;C:\xampp\php) this might be the problem. You can fix it using this command:
SET TEMP="<correct path to temporary directory>"
where <correct path to temporary directory>
might be the first path (before semicolon, that means C:\Users\<user>\AppData\Local\Temp
in my case).
回答5:
I got the same issue. First of all try to run npm install
with -verbose
flag. That can help you identify your problem.
That command told me that I had some problem with tunneling socket:
tunneling socket could not be established, cause=write EPROTO 101057795:error:140770FC:SSL routines:SSL 23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:794:
After that I googled the error and found thread on github about that problem. The problem was in proxy: previously I set up HTTP_PROXY
environment variable and after removing then environment variable npm install
completed without any error.
回答6:
Did you configured a proxy? See if this returns something:
> npm config get https-proxy
> npm config get proxy
If you have values configured there, they might not match correct ones. If you shouldn't be using a proxy, you can delete them:
> npm config delete https-proxy
> npm config delete proxy
Docs: https://docs.npmjs.com/cli/config
回答7:
After about 3 hours of tracing back our issue, it simply came down to running the following:
npm config rm proxy
npm config rm https-proxy
回答8:
There are a lot of different things that can cause this issue.
I had tried a lot of things, including most of the answers posted here, but no luck.
For some weird reason, this was my ISP's issue. It worked fine when I tried on a different ISP.
回答9:
Having same problem. Fixed it by switching to correct version of node required by the project.
My project needed node >=v4.3 and <=v5.
1) Check node version being used by nvm ls
2) Use nvm use [version]
or else install the specific version. if you don't have.
回答10:
For the major chunk of the people, the issue could be related to proxy settings and can be solved by the above-mentioned solutions.
For me, the issue was something else. I have private repository dependencies which are hosted at Bitbucket and are resolved through "git+ssh://git@bitbucket.org/" which intern uses SSH to retrieve the repo.
SSH by default prefers IPv6 if DNS retrieves AAAA record and if the host has one. Since Bitbucket does have AAAA record, SSH is done over IPv6. But my ISP doesn't support IPv6 (You could check if your ISP support's IPv6 by taking a test in http://ipv6-test.com/).
To solve this, you could force SSH client to use IPv4 instead of IPv6.
Set AddressFamily inet
in /etc/ssh/ssh_config
and restart SSH client.
On Ubuntu to restart SSH client use sudo service ssh restart