Skip to content

Bun patch 报权限错误

症状

在 Windows 下使用 bun patch --commit <package> 时报错:

bun patch vX.X.X (XXXXXXXX)
error: failed renaming patch file to patches dir EPERM: Operation not permitted (copyfile())

这是 Bun 本身的问题。当 Bun 缓存目录(默认在系统盘也就是 C 盘)和当前项目所在的盘不一样时,就会出现这个问题。

相关联的 issue:

解决

在系统盘开发项目,这样两个当然就在同一个盘里了。

Bun 的缓存目录可以通过环境变量或命令行参数配置,将缓存目录配置到和当前项目同一个盘的某个位置就可以了。

使用环境变量

Powershell 下,执行(注意这里 X: 要换成你项目所在的盘符

ps1
$Env:BUN_INSTALL_CACHE_DIR = "X:\.bun\install\cache"

然后 在当前终端会话下 可以正常 patch。

使用命令行参数

在 patch 开始和提交时带上 --cache-dir 选项(注意这里 X: 要换成你项目所在的盘符

ps1
bun patch <package> --cache-dir="X:\.bun\install\cache"

bun patch --commit <package> --cache-dir="X:\.bun\install\cache"