Published on

在 CentOS 上安装 Node 记解决一些场景问题

安装

  1. 假如我们想将 Node 安装到服务器的指定目录,那么可以先进入到该目录,比如 /opt/node
cd /opt/node

2.然后确保服务器上已经安装了 curltar工具,可以使用 curl --versiontar --version来检查是否已经安装。如果没有安装,可以使用下面的命令进行安装(-y 选项表示在安装期间自动回答 yes):

sudo yum install -y curl tar

3.然后从 Node 官方上的 Download页面中找到对应服务器系统的版本,复制链接,再回到服务器执行以下命令:

sudo curl -o node.tar.gz https://nodejs.org/dist/v18.16.0/node-v18.16.0.tar.gz

在这里 -o选项用于指定输出文件名或者位置

4.然后在当前目录下解压缩 node 压缩包:

sudo tar -xzvf node.tar.gz

5.将 Node 中的可执行文件目录路径添加到系统的配置环境变量:

export PATH=/opt/node/node-v14.16.1-linux-x64/bin:$PATH

这就将 Node 中可执行文件的目录路径添加到了环境变量中。

⚠️注意

通过上述指令设置的环境变量并不是永久生效的,它只会在当前终端窗口生效,并且在关闭该终端后就会失效。如果需要设置永久生效的环境变量,有两种方法:

  1. 所有用户登陆后都可以使用。将环境变量添加到 /etc/profile
# 使用 sudo vi /etc/profile 打开该文件,并在文件末尾添加以下内容
export PATH=/opt/node/node-v14.16.1-linux-x64/bin:$PATH

保存并推出编辑,然后执行 source /etc/profile命令让配置生效。这样,所有用户登陆后都可以使用该环境变量。

2.只需要在当前用户下生效。将环境变量添加到 ~/.bashrc或者 ~/.zshrc

# sudo vi ~/.bashrc
export PATH=/opt/node/node-v14.16.1-linux-x64/bin:$PATH

保存并推出编辑,然后执行 source ~/.bashrc命令让配置生效。

6.验证 Node 和 npm 是否都已经正确安装并且 PATH 也是否更新:

node -v
npm -v

如果有正确展示对应的版本,则表示安装成功了。

修改 npm 安装源

主要还是因为国内环境的问题,一些依赖包的安装是非常慢的,而且经常可能会超时,所以一般情况下我们会更换到国内的镜像源来提高安装的速度。

一般选择淘宝镜像源。以下是两种修改的方法:

  1. 使用命令行工具修改
    打开终端,输入以下命令来配置 npm 的淘宝镜像:
npm config set registry https://registry.npm.taobao.org

这条命令将把 npm registry 配置为淘宝镜像。
如果您希望切换回原来的官方源,可以使用以下命令:

npm config set registry https://registry.npm.taobao.org

2.手动修改 .npmrc 文件
您也可以手动编辑 ~/.npmrc 文件,将其中的 registry 项修改为您选择的源的地址。例如,在使用淘宝源时,您需要将 ~/.npmrc 文件中的 registry 修改为:

registry=https://registry.npm.taobao.org/


如果您需要更改回官方源,则需要修改为以下内容:

registry=https://registry.npmjs.org/

问题

在不使用sudo时可以使用npm,使用sudo之后提示命令没找到

如果在使用 sudo npm 安装工具时,出现 "npm command not found" 的错误提示,可能是因为系统的环境变量配置问题导致的。

当我们在不使用 sudo 命令的情况下以普通用户身份运行 npm 命令时,npm 是可以被正常执行的。这是因为普通用户已经将 npm 的安装路径包含在了他们的 PATH 环境变量中。

而当我们使用 sudo 命令时,它使用的是 root 用户的环境,该用户不一定拥有与我们普通用户相同的环境配置,这就可能导致 npm 命令无法被找到。

为了解决这个问题,您可以通过以下命令,将当前用户的 ~/.npmrc 文件复制到 root 用户的 home 目录中:

sudo cp ~/.npmrc ~root/

或者,您也可以添加一个环境变量来指定 npm 安装路径,使得 sudo 也可以访问到 npm 命令:

sudo env "PATH=$PATH" npm install <package> -g

这会将当前用户的 PATH 环境变量注入到 sudo 的命令中,使得 sudo 命令也可以找到正确路径下的 npm 命令。

将 npm 全局安装目录的所有者更改为当前用户

有这个需求的原因是在服务器上,由于当前用户的权限不足,而导致 npm 安装一些工具失败,但是使用 sudo 又提示 npm 未找到(原因可以看「一些常识)

sudo chown -R $USER $(npm config get prefix)/{lib/node_modules,bin,share}