npm - EPERM:Linux 上不允许进行操作

Alc*_*ech 5 linux node.js npm reactjs npm-install

我正在尝试在本地计算机(centOS)上进行反应教程

我跑了

sudo npm install -g create-react-app
Run Code Online (Sandbox Code Playgroud)

运行该命令后我收到以下错误

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.
Run Code Online (Sandbox Code Playgroud)

我尝试进入该目录并解压 .tgz 文件并更改一些权限,但没有任何效果。我在网上遵循了一些类似问题的解决方案,但仍然没有运气。

我也跑了

npm cache clear
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么会发生这种情况?有什么建议么?

小智 0

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

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

默认值~/.npm在 Linux 上或%AppData%/npm-cache在 Windows 上。

然后您可以尝试使用 来安装您想要的软件包npm install -g

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

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