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

部署Firebase TypeScript云函数时遇TypeError: 无法读取null的length属性

Firebase云函数部署报错:TypeError Cannot read properties of null (reading 'length')

问题描述

我在部署Firebase项目的TypeScript云函数时遇到报错,函数包含两个核心逻辑:

  • createCheckoutSession:onCall类型,用于创建Stripe结账会话
  • handleStripeWebhook:onRequest类型,用于处理Stripe Webhook请求

部署时触发如下错误:

TypeError Cannot read properties of null (reading 'length')

即使部署空函数也会出现相同错误,初步怀疑是配置问题,但尝试过相关解决方案后无效。

排查与解决方向

1. 更新Firebase CLI到最新稳定版

旧版本CLI可能存在TypeScript编译或部署的兼容性问题,先执行更新:

npm install -g firebase-tools

更新后重新尝试部署:

firebase deploy --only functions

2. 校验TypeScript配置文件(tsconfig.json)

确保配置符合Firebase云函数运行环境要求,重点检查以下字段:

  • target:设置为ES2018或更高(兼容Node.js 18/20版本,Firebase当前推荐运行时)
  • module:设置为CommonJS
  • outDir:指向lib目录(默认编译输出路径)
  • strict:可暂时设为false,排查是否为类型检查触发的异常

基础配置示例:

{
  "compilerOptions": {
    "target": "ES2018",
    "module": "CommonJS",
    "outDir": "./lib",
    "rootDir": "./src",
    "strict": false,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", ".firebase", "lib"]
}

3. 清理依赖与编译缓存

依赖冲突或缓存异常可能导致部署失败,执行以下步骤重置:

  • 删除node_modules目录和package-lock.json/yarn.lock文件
  • 重新安装依赖:
npm install
  • 手动编译TypeScript代码,检查是否有编译错误:
tsc
  • 清理Firebase本地缓存:
firebase clear

完成后重新尝试部署。

4. 检查Firebase项目配置

  • 确认firebase.json中函数配置正确,示例:
{
  "functions": {
    "source": ".",
    "runtime": "nodejs20",
    "ignore": [
      "node_modules",
      ".git",
      "firebase-debug.log",
      "firebase-debug.*.log"
    ]
  }
}

确保runtime设置为Firebase支持的Node.js版本(当前推荐20)。

  • 验证项目关联是否正确:
firebase use --add

选择对应项目ID重新关联后部署。

5. 核对环境变量与Secret配置

如果使用了Firebase Secret或环境变量:

  • 查看已配置的环境变量:
firebase functions:config:list
  • 若使用Stripe密钥,确认已通过firebase functions:config:set正确配置,且代码中读取逻辑无误:
import * as functions from "firebase-functions";

const stripeSecretKey = functions.config().stripe.secret_key;

6. 查看详细错误日志

部署失败后,通过日志定位具体问题:

firebase functions:log

日志中的堆栈信息可帮助找到空指针异常的具体来源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 16:25:00