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

升级Firebase Functions Node.js版本后部署报错:zip无效文件

Firebase Functions部署报错:zip: not a valid zip file(升级Node.js版本后)

问题描述

升级Firebase Functions的Node.js版本后,推送代码部署时触发统一错误:

Build failed: failed to Fetch: copying .runtimeconfig.json to /workspace/.runtimeconfig.json: zip: not a valid zip file

已尝试执行firebase functions:config:get > .runtimeconfig.json及更新firebase-functions依赖,但问题未解决。

函数代码参考:

const functions = require('firebase-functions');
const firebase = require('firebase-admin');
const express = require('express');
const cors = require('cors');
const app = express();

var serviceAccount = {
};

var corsOptions = {
  origin: 'http://example.com',
  optionsSuccessStatus: 200,
};

firebase.initializeApp({
  credential: firebase.credential.cert(serviceAccount),
});

app.get('/test', cors(corsOptions), async function (req, res, next) {
  return res.status(200).send({ message: "Hello world!" });
});

const statistics = functions.https.onRequest(app);

module.exports = {
  statistics,
};

解决方案

1. 修复.runtimeconfig.json文件

这个错误的核心原因是.runtimeconfig.json文件损坏或格式无效,按以下步骤处理:

  • 删除现有文件:
    # macOS/Linux
    rm .runtimeconfig.json
    # Windows
    del .runtimeconfig.json
    
  • 重新生成文件,注意编码问题(尤其是Windows环境):
    # macOS/Linux
    firebase functions:config:get > .runtimeconfig.json
    # Windows PowerShell(避免编码乱码)
    firebase functions:config:get | Out-File -Encoding utf8 .runtimeconfig.json
    
  • 打开生成的文件,确认是标准JSON格式,无多余字符、换行或乱码。

2. 对齐Node.js版本兼容性

  • 确认本地Node.js版本与Firebase Functions官方支持版本一致(当前支持18、20版本)
  • 在functions/package.json中明确指定Node版本,避免自动适配导致的兼容问题:
    "engines": {
      "node": "18"
    }
    

3. 清理缓存与依赖

  • 重置Firebase CLI登录状态,清理缓存:
    firebase logout && firebase login
    
  • 删除本地依赖文件,重新安装:
    rm -rf node_modules package-lock.json
    npm install
    
  • 启用调试模式部署,查看更详细的错误日志:
    firebase deploy --only functions --debug
    

4. 排查打包干扰文件

  • 检查functions目录下是否存在其他zip格式文件或损坏的归档文件,这类文件可能干扰Firebase的打包流程
  • 将.runtimeconfig.json添加到.gitignore中,避免不同环境的配置文件被提交或覆盖:
    # .gitignore
    .runtimeconfig.json
    

额外提示

你的代码中serviceAccount对象为空,后续可能引发初始化失败问题,建议补全服务账号配置或改用默认应用初始化方式(部署时Firebase会自动注入服务账号权限)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:25:06