- Published on
在 CentOS 上安装 Node 记解决一些场景问题
- Authors
- Name
- 三金得鑫
- 掘金
- 掘金
安装
- 假如我们想将 Node 安装到服务器的指定目录,那么可以先进入到该目录,比如
/opt/node
cd /opt/node
2.然后确保服务器上已经安装了 curl
和 tar
工具,可以使用 curl --version
和 tar --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 中可执行文件的目录路径添加到了环境变量中。
⚠️注意
通过上述指令设置的环境变量并不是永久生效的,它只会在当前终端窗口生效,并且在关闭该终端后就会失效。如果需要设置永久生效的环境变量,有两种方法:
- 所有用户登陆后都可以使用。将环境变量添加到
/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 安装源
主要还是因为国内环境的问题,一些依赖包的安装是非常慢的,而且经常可能会超时,所以一般情况下我们会更换到国内的镜像源来提高安装的速度。
一般选择淘宝镜像源。以下是两种修改的方法:
- 使用命令行工具修改
打开终端,输入以下命令来配置 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}