报错:Error: EACCES: permission denied, rename ‘/usr/local/lib/node_modules/pnpm‘ -> ‘/usr/local/lib/no

Posted melissaomy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了报错:Error: EACCES: permission denied, rename ‘/usr/local/lib/node_modules/pnpm‘ -> ‘/usr/local/lib/no相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/astonishqft/article/details/124823381

报错一,在安装

npm install pnpm -g 

出现一堆报错 

更改您的文件权限..像这样

首先检查谁拥有该目录

ls -la /usr/local/lib/node_modules

它拒绝访问,因为node_module文件夹归root所有

drwxr-xr-x   3 root    wheel  102 Jun 24 23:24 node_modules

所以这需要通过将root更改为您的用户来更改,但首先运行以下命令以检查当前用户 如何通过OS X中的命令行获取活动用户的名称?

id -un

然后改变所有者

sudo chown -R [owner]:[owner] /usr/local/lib/node_modules

  • 这很有用,但是当我运行命令更改所有者时,我得到了“非法组名”。所以我将命令更改为`sudo chown -R ownerName:/ usr / local / lib / node_modules`并且它可以工作。 (37认同)
  • 在某些情况下,在命令中添加 sudo 也不起作用。这对我有用,应该被接受。 (7认同)
  • 与其更改权限,不如在文档中建议使用 nvm 安装 npm。见 /sf/answers/4170268651/ (3认同)
  • 尽管那是正确的答案,但我已经多次遇到此问题,更好的解决方案是使用nvm。这样,您将不需要使用`chown`更改文件所有者。https://github.com/nvm-sh/nvm (2认同)
  • **停止** 做 /sf/answers/3869245131/ 而不是搞乱 `/usr/local/lib/node_modules` 的权限 (2认同)

Ada*_*dam  27

您可以通过 Node 版本管理器或 Node 安装程序安装 npm。在文档中它指出:

我们不建议使用 Node 安装程序,因为 Node 安装过程会将 npm 安装在具有本地权限的目录中,并且在全局运行 npm 包时可能会导致权限错误。

NPM 实际上推荐使用节点版本管理器来避免这些错误。

由于您有权限错误,您可能通过 Node 安装程序安装了 npm,现在您需要使用 nvm(节点版本管理器)重新安装它。

幸运的是,这非常简单。您甚至不需要删除当前版本的 npm 或 Node.js。

你需要做的就是

  1. 安装nvm。对于 OSX 或 Linux 节点使用:

     curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
    

这会在您的主目录中创建一个 nvm 文件夹。

然后

  1. 通过 nvm 安装 npm 和 node.js。为此,只需致电

     nvm install node 
    

(“节点”是最新版本的别名)

现在你可以在全球范围安装你的包,而无需使用sudo或改变的所有者node_modulesusr文件夹中。

报错二

pnpm 安装库提示错误

ERR_PNPM_PUBLIC_HOIST_PATTERN_DIFF  This modules directory was created using a different public-hoist-pattern value. Run “pnpm install” to recreate the modules directory.

翻译:

PNPM公共提升机模式差异
该模块目录使用不同的公共吊装模式值创建。运行"pnpm install"重新创建modules目录。

解决:

删掉node_module包,重新pnpm i,在安装你想要安装的即可

报错三

 

根目录下存在 pnpm-workspace.yaml 配置文件,并且在 pnpm-workspace.yaml 中指定工作空间的目录。比如这里我们所有的子包都是放在 packages 目录下,因此修改 pnpm-workspace.yaml 内容如下:

packages:
  - 'packages/*'

以上是关于报错:Error: EACCES: permission denied, rename ‘/usr/local/lib/node_modules/pnpm‘ -> ‘/usr/local/lib/no的主要内容,如果未能解决你的问题,请参考以下文章

NPM全局安装依赖权限报错Error: EACCES: permission denied

linux 下 root 权限执行 npm install 报错:Error:EACCES:permission denied ‘xxx‘?

Error: listen EACCES: permission denied 0.0.0.0:80

报错:Error: EACCES: permission denied, rename ‘/usr/local/lib/node_modules/pnpm‘ -> ‘/usr/local/lib/no

Error: EACCES: permission denied, open ‘tree-sitter‘

Error: EACCES: permission denied, open ‘tree-sitter‘