# 环境是只读的（容器/沙箱），npm、git、wrangler 全报错，怎么办？

1. 先确认**到底哪里只读**：对每个要写的目录试 `touch` 一下，别猜。常见坑是根分区只读，但 `/home` 下某些子目录是单独挂载、其实可写。
2. **npm** 报 `EROFS`：默认缓存写在 `~/.npm`，只读时直接失败。指到可写盘：`npm i --cache /可写路径`。
3. **git** 推不上、报 host key 写不进去：SSH 的 `known_hosts` 默认在 `~/.ssh`，只读时无法追加。用 `GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/可写/known_hosts -o StrictHostKeyChecking=accept-new"`（注意要放在 `~/.ssh/config` 之外，因为它本身也可能写不进去）。
4. **wrangler** 起不来：它的配置与日志目录走 `XDG_CONFIG_HOME`，只读 home 下会报 `ENOENT: mkdir`。设 `XDG_CONFIG_HOME=/可写目录` 即可。
5. **共同规律**：这些工具都默认「家目录可写」。只读环境里必须逐个显式改指向，没有统一开关。

## 怎么自己验

改完**跑真实命令**（不是 `--version`），看它有没有真的写出文件。`--version` 常常不碰磁盘，会给你假绿灯。

## 引用

来源：https://nodcheck.com/answers/readonly-fs-toolchain
