一、 背景
项目支持的node环境是18以上,使用pnpm安装依赖,安装pnpm时报错,刚解决pnpm安装,运行时又报错
二、 遇到的问题以及怎么解决
1、运行npm install -g pnpm时,提示permission denied
使用npm修复权限
# 为当前用户创建全局安装目录
mkdir -p ~/.npm-global
# 配置 npm 使用这个新目录作为全局安装路径
npm config set prefix '~/.npm-global'
# 将新目录添加到 PATH 环境变量
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
# 重新加载配置
source ~/.bashrc
然后重新安装 pnpm
sudo npm install -g pnpm
2、运行项目式报错了,this[kHandle]= new _Hash(algorithm, ...) digital envelope routines::unsupported
这个错误通常是因为Node.js版本与项目依赖的兼容性问题。在Node.js 17及以上版本中,OpenSSL加密库有更新,一些旧的加密算法(如MD5)被默认禁用。这可能导致使用旧加密算法的项目无法运行。
可以通过设置环境变量来临时解决这个问题:
export NODE_OPTIONS="--openssl-legacy-provider"
npm run dev
# 或者
export NODE_OPTIONS="--openssl-legacy-provider"
pnpm run dev
这是一个临时解决方案,长期建议更新项目依赖