yalc执行add命令报错找不到包 存储路径异常指向root目录问题咨询
yalc读取错误存储路径问题解决办法
根因分析
- 核心是两次执行yalc命令的用户身份不一致,导致读取的
$HOME环境变量不同:- 发布包时若使用了
sudo前缀,sudo会临时将会话的HOME环境变量切换为root用户的家目录/root,发布的包会被存入/root/.yalc/packages路径 - 执行业务侧
yalc add时使用普通用户身份,默认读取当前用户家目录下的/home/username/.yalc路径,两个路径不互通就会出现找不到包的报错
- 发布包时若使用了
修复步骤
- 清理root用户下的yalc残留缓存(可选,避免后续干扰)
sudo yalc cache clean # 或者直接删除root下的yalc目录 sudo rm -rf /root/.yalc
- 修正本地npm包项目的权限(若存在权限报错时执行)
sudo chown -R $USER:$USER 你的本地npm包项目根路径
- 用普通用户身份重新发布本地包
回到本地npm包项目根目录,不要加sudo,直接执行:
yalc publish
- 业务仓库重新添加依赖
先删除业务仓库下原有的.yalc目录和yalc.lock文件,再执行:
yalc add <package>
临时规避方案
如果不想修改历史配置,也可以在执行yalc命令时主动指定存储路径:
YALC_DIR=/home/username/.yalc yalc add <package>
日常使用中除非明确需要,不要给npm、yalc这类用户态包管理工具加sudo前缀,很容易出现权限、路径不匹配的异常。
内容的提问来源于stack exchange,提问作者gixxerblade
相关产品推荐
相关产品推荐

