快速预览:
要在 linux 安装如下依赖,安装成功但是显示命令 not found
- 安装 nodejs
- 安装 npm
- 安装 cnpm
- 安装 http-server
正文开始:
因为买了新电脑,nodejs 等环境要重新装
安装 nodejs 的时候遇到个问题,即,可以使用 apt 安装 nodejs,但是 npm 没有
解决办法:
# 下载
wget https://nodejs.org/dist/v14.4.0/node-v14.4.0-linux-x64.tar.xz
# 解压 到 local 文件夹
tar -xf node-v14.4.0-linux-x64.tar.xz /usr/local
# 进入 local,移动文件夹
cd /usr/local/
sudo mv node-v14.4.0-linux-x64/ nodejs
# 建立连接
sudo ln -s /usr/local/nodejs/bin/node /usr/local/bin
# sudo ln -s /usr/local/nodejs/bin/npm /usr/local/bin
# 测试
node -v
npm -v
如果执行
npm -v
报错为Cannot find module ‘semver’
,则面的步骤重新来
同样,cnpm 安装也是类似的方式:
# 使用 npm 安装 cnpm
npm install cnpm -g --registry=https://registry.npm.taobao.org
# 会显示安装路径 /usr/local/nodejs/bin/cnpm -> /usr/local/nodejs/lib/node_modules/cnpm/bin/cnpm
# 建立软连接
sudo ln -s /usr/local/nodejs/lib/node_modules/cnpm/bin/cnpm /usr/local/bin/cnpm
# 测试
cnpm -v
# cnpm@6.1.1 (/usr/local/nodejs/lib/node_modules/cnpm/lib/parse_argv.js)
同理,安装 http-server 也是一样的问题
sudo npm install -g http-server
# /usr/local/nodejs/bin/http-server -> /usr/local/nodejs/lib/node_modules/http-server/bin/http-server
# 建立连接
sudo ln -s /usr/local/nodejs/lib/node_modules/http-server/bin/http-server /usr/local/bin/http-server
# 测试
http-server
其他:
若执行 sudo xxx
命令报错
sudo: xxx command not found
则可能要排查 sudo
相关的问题,因为可能安装某个 xxx
依赖的时候没有使用 sudo
,但是执行的时候需要使用 sudo
,从而导致系列问题
以我遇到的问题为例,解决办法:
# 安装 tarojs
cnpm install -g @tarojs/cli
# taro 创建项目
taro init demo
# 报错为 permission denied,所以我加上 sudo
sudo taro init demo
# 报错为 sudo: taro command not found
# 解决办法:
# 找到 taro 的位置
which taro
# /usr/local/nodejs/bin/taro
# 编辑 /etc/sudoers
sudo vi /etc/sudoers
# 找到 secure_path 在最后加上 :/usr/local/nodejs/bin
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# 结果为
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/nodejs/bin"
# 验证是否成功
# 关掉 bash 再次打开
# 执行
sudo taro init demo
# 没有报 permission 错误,创建模板成功
参考资料: