npm更新检查失败


14

我实际上是在尝试在Ubuntu 17.04上将Node.js和npm一起安装。我从nodejs.org下载了linux版本,并为node和nodejs创建了软链接。在检查nodejs的版本时,它显示了我安装的版本,我对此表示满意。

现在我试图为npm做同样的事情。我试图为npm创建软链接。

 sudo ln -sf /mnt/7A46BE1454633621/softwares/programming/frontend/nodejs/lib/node_modules/npm/bin/npm 
    /usr/bin/npm

我不知道我创建的链接是否正确。但是在运行npm -v命令后,我看到的是5.0.3版本,这是我要安装的版本。显示了版本,但在它的正下方,我看到了类似的内容。

5.0.3
npm update check failed                 │
│           Try running with sudo or get access           │
│          to the local update config store via           │
│ sudo chown -R $USER:$(id -gn $USER) /home/sagar/.config 

sudo chown -R $USER:$(id -gn $USER) /home/sagar/.config有建议吗?
乔治·乌德森

如果您使用的是Docker,请仔细检查文件系统是否为只读。它必须是可写的。
КонстантинВан

Answers:


14

我的npm版本是5.0.3,使用任何npm命令时我都遇到相同的问题:

npm错误消息

该命令运行正常,但是该代码一直在显示,没有明显的原因。我已经使用以下命令从5.0.3更新到5.2.0:

sudo chown -R $USER:$(id -gn $USER) /home/sagar/.config

npm install -g npmnpm i -g npm

现在npm运行正常。


为我工作。虽然,我必须以npmroot身份进行更新sudo npm i -g npm。将npm更新为6.0.1
Denialos

3

对我来说完全一样的问题,但似乎与版本无关(我使用的是npm 5.5.1)。固定权利对~/.config我来说是个诀窍:

sudo chown -R $USER:$(id -gn $USER) ~/.config

我想这与的某些所有者问题有关~/.config/configstore/update-notifier-npm.json


1

我已经更改了所有者

~/configstore

~/configstore/update-notifier-npm.json

到$ USER:$ USER。

我的猜测是,npm使用sudo 运行会创建该文件。至少在我的系统上,我们发现:

$ env | grep  -e HOME= -e "^USER="
USER=craig
HOME=/home/craig

$ sudo env | grep  -e HOME= -e "^USER="
HOME=/home/craig
USER=root

因此,如果sudo npm将其编码为创建代码,~/configstore/update-notifier-npm.json它将以普通用户的主目录进行创建。这在以后运行时产生了一个问题,如果npm没有sudo该问题,还想读取甚至写入~/configstore/update-notifier-npm.json。由于某种原因,两者的权限均为600。

时要加倍小心chownchmod-ing一切下~/.config,有可能是有什么敏感。


1

不要chown在错误消息中使用提供的命令。该路径~/.config被许多应用程序使用,并且是用于存储配置信息的标准路径。不建议在此更改组权限。最好只更改所需的路径,例如:

sudo chown -R $USER ~/.config/configstore

特殊情况:Docker

发生此错误的常见情况是使用Docker之类的东西(尤其是通过安装自己的家)。考虑设置环境变量,例如NPM_CONFIG_CACHEXDG_CONFIG_HOME。第一个设置您的缓存路径,最后一个设置您的configstore路径。我不会使用.config主目录中的文件夹来避免文件所有权问题。但是使用缓存可以帮助NPM等服务节省带宽。尝试避免在每个版本上下载过多,并使用类似以下的内容(但请检查类似的目标/tmp是否具有足够的磁盘空间):

test -d /tmp/$USER/cache || mkdir -p /tmp/$USER/cache
docker run \
  -v /tmp/$USER:/tmp/$USER \
  -e "NPM_CONFIG_CACHE=/tmp/$USER/cache/npm" \
  -e "XDG_CONFIG_HOME=/tmp/$USER/cache/" \
  ...

0

好,我们可以做的第一件事就是解决这个问题

  1. 确保已选中文件夹设置中的一个选项以查看隐藏的文件。
  2. 右键单击.config文件并选择属性,然后单击权限选项卡。
  3. 组的文件夹权限和文件权限| 业主| 其他的则勾选读取,写入和执行选项。
  4. 在底部,单击“将权限应用于随附文件”。
  5. 现在尝试在看到这些消息的地方重新运行相同的npm命令,现在它应该永远消失了。

如果这帮助您知道该怎么办。

注意:相同的过程也可以单独应用于.config文件夹中的configstore。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.