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

部署Firebase时遇TypeError [ERR_UNKNOWN_FILE_EXTENSION]错误求助

解决Firebase Deploy时的ERR_UNKNOWN_FILE_EXTENSION(.ts文件扩展错误)

这个错误的核心原因是Node.js无法直接识别.ts文件扩展名,Firebase部署时尝试直接执行你的TypeScript源文件(src/index.ts),但没有先将其编译为JavaScript。以下是具体修复步骤:

步骤1:安装TypeScript开发依赖

你的package.json中缺少TypeScript编译器,先安装它:

npm install typescript --save-dev

步骤2:添加编译脚本到package.json

在package.json中新增编译和部署脚本,确保部署前先将TypeScript编译到指定输出目录(对应tsconfig里的outDir):

{
  "scripts": {
    "build": "tsc",
    "deploy": "npm run build && firebase deploy"
  },
  "dependencies": {
    "axios": "^1.3.5",
    "firebase-admin": "^11.5.0",
    "firebase-functions": "^4.2.1",
    "nodemailer": "^6.9.1"
  },
  "devDependencies": {
    "typescript": "^5.0.0"
  }
}

新增的deploy脚本会自动先完成编译再执行部署,省去手动操作的麻烦。

步骤3:修正firebase.json配置

确保firebase.json中functions的source指向编译后的lib目录,而非源文件目录src:

{
  "functions": {
    "source": "lib"
  }
}

如果没有firebase.json,可以通过firebase init functions重新初始化,选择TypeScript模板会自动生成正确配置。

步骤4:调整tsconfig.json的ts-node配置(可选但推荐)

你的tsconfig里启用了ts-node的ESM模式,但目前Firebase Functions对CommonJS支持更稳定,建议移除这部分配置:

{
  "compilerOptions": {
    "module": "CommonJS",
    "moduleResolution": "Node",
    "esModuleInterop": true,
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "outDir": "lib",
    "sourceMap": true,
    "strict": true,
    "noImplicitAny": false,
    "target": "ES2022",
    "moduleDetection": "force"
  },
  "compileOnSave": true,
  "include": [
    "src"
  ]
}

步骤5:执行部署

运行新增的部署脚本即可完成编译+部署流程:

npm run deploy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:22:01