NodeJS 为什么n抛出错误?错误:sudo required(or change ownership,or define N_PREFIX)

xdnvmnnf  于 2023-11-17  发布在  Node.js
关注(0)|答案(5)|浏览(284)

我想安装最新的Node.js版本

n latest

  installing : node-v14.2.0
       mkdir : /usr/local/n/versions/node/14.2.0
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

  Error: sudo required (or change ownership, or define N_PREFIX)

字符串
所有权有问题我试着解决

sudo chown -R $(whoami) /usr/local/n


同样的错误再次。

n latest
cp: cannot create directory '/usr/local/lib/node_modules': Permission denied
cp: cannot create regular file '/usr/local/bin/node': Permission denied
cp: cannot create symbolic link '/usr/local/bin/npm': Permission denied
cp: cannot create symbolic link '/usr/local/bin/npx': Permission denied


胡萝卜素

/usr/local/n$ ll
total 12
drwxrwxr-x  3 miki root 4096 мај  8 13:29 ./
drwxr-xr-x 11 root root 4096 мај  8 13:29 ../
drwxrwxr-x  3 miki miki 4096 мај  8 13:29 versions/


解决

sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share

ddrv8njm

ddrv8njm1#

你只需要定义N_PREFIX。

  • 首先创建文件夹,其中n数据将被保存

第一个月

  • 然后导出.bashrc文件中的N_PREFIX

export N_PREFIX=$HOME/.n
如果使用fishshell,请将以下内容添加到. config.fish文件中:set -x N_PREFIX $HOME/.n

wwodge7n

wwodge7n2#

首选的解决方案应该是通过定义N_PREFIX将默认位置覆盖到不需要管理员权限的目录。
要将目录更新为用户目录,请使用以下命令:

export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH

字符串
文件参考:https://github.com/tj/n#optional-environment-variables

e4yzc0pl

e4yzc0pl3#

Nodejs正确的方式,而不使用sudo。更新现有的正确安装:

npm i -g n
N_PREFIX=$HOME/.local n stable

字符串
参考:https://guillermo.at/update-node-proper-way

3htmauhk

3htmauhk4#

我也遇到了这个问题,其实当前用户没有全局目录的权限。
尝试使用伊格纳西奥拉戈的答案中的解决方案并没有奏效,最终用下面的方法完美解决了:
1.首先用brew安装node,然后全局安装n。

brew install node
npm install -g n

字符串
1.执行n的诊断命令

n doctor


它会列出问题是什么,只需参考错误列表中的帮助建议。
最后,记得卸载安装了brew的节点,就完美解决了。

brew uninstall node


好极了!

qcuzuvrc

qcuzuvrc5#

上下文

默认情况下,n命令下载并安装到/usr/local,默认情况下创建具有以下权限的/usr/local/n文件夹:

drwxr-xr-x root  wheel  .
drwxr-xr-x root  wheel  ..
drwxr-xr-x root  wheel  versions

字符串

可能的解决方案

A.加入群组并授予写权限(更安全):

1.将自己添加到wheel组。
1.1 macOS:

sudo dseditgroup -o edit -a $(whoami) -t user wheel


1.2 GNU/Linux:

sudo usermod -a -G wheel $(whoami)


1.允许wheel成员对该文件夹具有写入权限:

sudo chmod -R g+w /usr/local/n/

B.直接将所有权更改为您的用户(更快):

您需要更改n存储node版本所有权的位置:

sudo mkdir -p /usr/local/n && sudo chown -R $(whoami) /usr/local/n/

C.更改n保存节点二进制文件的文件夹等

默认情况下,n命令下载并安装到/usr/local,但您可以通过定义N_PREFIX覆盖此位置。
来源:https://github.com/tj/n#optional-environment-variables
1.创建一个文件夹,即:$HOME/.n

mkdir $HOME/.n


1.定义环境变量N_PREFIX,并将以下行添加到shell初始化文件中:
2.1. bash (~/.bashrc) 或zsh (~/.zshrc)

export N_PREFIX=$HOME/.n


2.2. fish (~/.config/fish/config.fish)

set -x N_PREFIX $HOME/.n


1.将新的二进制路径添加到环境的$PATH中:
3.1. bash/zsh:

export PATH=$N_PREFIX/bin:$PATH


3.2.鱼:

set -x PATH $N_PREFIX/bin:$PATH

相关问题