You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Functions出现EROFS只读错误无法写入metadata.json如何解决

报错原因

EROFS: read-only file system 报错是由Firebase Functions运行环境的文件系统特性导致的:函数部署后所有打包上传的代码/文件所在目录均为只读状态,仅/tmp临时目录开放写入权限。你直接修改部署包内的metadata.json,触发了只读系统限制。

可行解决方案

方案1:临时读写(不需要持久化存储数据)

如果修改后的metadata.json只需要在当前函数调用周期/实例存活周期内使用,不需要跨调用保留数据,把操作路径切换到/tmp目录即可:

  1. 先将部署包内的原始metadata.json复制到/tmp目录
  2. 后续所有读写操作均指向/tmp下的文件

示例代码:

const fs = require('fs');
const path = require('path');

// 原始部署文件路径
const originMetadataPath = path.join(__dirname, 'metadata.json');
// 临时目录可写路径
const writableMetadataPath = path.join('/tmp', 'metadata.json');

// 复制原始文件到可写目录
fs.copyFileSync(originMetadataPath, writableMetadataPath);

// 执行写入操作
fs.writeFileSync(writableMetadataPath, JSON.stringify({yourKey: 'yourValue'}));

注意:/tmp目录的存储上限为512MB,且实例销毁后所有数据会被清空,仅适合临时缓存场景。

方案2:持久化存储(需要跨函数调用保留修改后的数据)

如果修改后的metadata.json需要长期保留,不要使用本地文件存储,切换到Firebase配套的存储服务即可:

  • 结构化数据直接存入Cloud Firestore或Realtime Database,直接通过数据库API读写json结构内容,无需操作本地文件
  • 必须保留文件格式的话,将文件上传到Cloud Storage for Firebase,需要使用时再下载到/tmp目录操作

内容的提问来源于stack exchange,提问作者Paresh Nandaniya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:36:03