npm - EPERM:在Linux上无法执行操作

5
我是一个有用的助手,可以翻译文本。
我正在尝试在我的本地机器(CentOS)上完成React教程。
我运行了:
sudo npm install -g create-react-app

运行该命令后,我遇到了以下错误。
npm ERR! Linux 3.10.0-514.el7.x86_64
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "create-react-app"
npm ERR! node v6.10.3
npm ERR! npm  v3.10.10
npm ERR! path /tmp/npm-1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz
npm ERR! code EPERM
npm ERR! errno -1
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open '/tmp/npm-   1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz' while getting shasum for /tmp/npm-1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz
npm ERR! From:     https://registry.npmjs.org/tar/-/tar-2.2.1.tgz
npm ERR!     at Error (native)
npm ERR!  { Error: EPERM: operation not permitted, open '/tmp/npm-1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz' while getting shasum for /tmp/npm-1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz
npm ERR! From:     https://registry.npmjs.org/tar/-/tar-2.2.1.tgz
npm ERR!     at Error (native)
npm ERR!   errno: -1,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: '/tmp/npm-1422-84cdbe70/registry.npmjs.org/tar/-/tar-2.2.1.tgz',
npm ERR!   parent: 'tar-pack' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

我尝试进入目录并解压.tgz文件,更改了一些权限,但仍然无法正常工作。我按照类似问题的在线解决方案进行了操作,但仍然没有成功。
我还运行了
npm cache clear

有人能解释一下为什么会出现这种情况吗?有什么建议吗?


你尝试过这些吗? https://docs.npmjs.com/getting-started/fixing-npm-permissions - dhershman
@TimeDead 是的,但那个处理 EACCES 错误,而这是一个 EPERM 错误。 - Alcamech
你尝试过使用chmod命令或检查/tmp文件夹的权限吗? - dhershman
是的,我有。使用 ls -l 命令返回 drwxrwxrwt. 24 root root 4096 Jun 6 07:42 tmp - Alcamech
2个回答

0

运行npm cache clear甚至npm cache clear -f并不总是清除所有缓存。

有时您应该手动删除缓存文件。 要这样做,请转到默认的NPM缓存文件夹并删除其内容:

默认:Linux上的~/.npm,或Windows上的%AppData%/npm-cache

然后,您可以尝试使用npm install -g安装所需的软件包。

避免使用sudo npm install -g,因为这可能会破坏npm权限。而是更改npm的默认目录的权限,或将npm的默认目录更改为另一个目录。更多详细信息请参见: https://docs.npmjs.com/getting-started/fixing-npm-permissions

警告:如果npm的默认路径只是/usr,更改目录权限将会有害。


0
尝试使用 $: sudo npm install。

目前你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接