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

Firebase Cloud Functions集成FFmpeg报错:找不到fluent-ffmpeg模块

解决Firebase Cloud Functions部署时Cannot find module 'fluent-ffmpeg'报错

核心问题

Firebase Cloud Functions部署时,只会打包并使用functions目录下package.json声明的依赖。你把fluent-ffmpeg等相关依赖放在了项目根目录的package.json中,部署时这些依赖不会被纳入Functions运行环境,导致模块找不到。

修复步骤

  • 1. 迁移依赖到functions目录的package.json
    将根目录package.json里与FFmpeg相关的依赖,复制到functions/package.json对应的依赖项中:

    {
      "name": "functions",
      "scripts": {
        "lint": "eslint --ext .js,.ts .",
        "build": "tsc",
        "build:watch": "tsc --watch",
        "serve": "npm run build && firebase emulators:start --only functions",
        "shell": "npm run build && firebase functions:shell",
        "start": "npm run shell",
        "deploy": "firebase deploy --only functions",
        "logs": "firebase functions:log"
      },
      "engines": {
        "node": "18"
      },
      "main": "lib/index.js",
      "dependencies": {
        "firebase-admin": "^11.8.0",
        "firebase-functions": "^4.3.1",
        "fluent-ffmpeg": "^2.1.2",
        "ffmpeg-static": "^5.1.0"
      },
      "devDependencies": {
        "@typescript-eslint/eslint-plugin": "^5.61.0",
        "@typescript-eslint/parser": "^5.12.0",
        "@types/fluent-ffmpeg": "^2.1.21",
        "eslint": "^8.9.0",
        "eslint-config-google": "^0.14.0",
        "eslint-plugin-import": "^2.25.4",
        "firebase-functions-test": "^3.1.0",
        "typescript": "^4.9.0"
      },
      "private": true
    }
    

    说明:@types/fluent-ffmpeg是TypeScript类型依赖,放在devDependencies更合理。

  • 2. 在functions目录重新安装依赖
    进入functions目录执行命令:

    npm install
    

    确保所有依赖都安装到functions/node_modules目录下。

  • 3. 优化FFmpeg路径配置(可选)
    手动存放二进制文件容易出现路径或环境适配问题,使用ffmpeg-static和ffprobe-static可自动适配Cloud Functions环境,修改代码如下:

    import * as ffmpeg from "fluent-ffmpeg";
    import * as ffmpegStatic from "ffmpeg-static";
    import * as ffprobeStatic from "ffprobe-static";
    
    ffmpeg.setFfmpegPath(ffmpegStatic as string);
    ffmpeg.setFfprobePath(ffprobeStatic.path);
    

    此方式无需手动管理二进制文件,避免路径错误。

  • 4. 重新部署Functions
    在项目根目录执行部署命令:

    firebase deploy --only functions
    

额外注意

  • 根目录package.json中的相关依赖可保留,但部署Functions时不会被使用,若无需可清理。
  • 确保functions目录下的tsconfig.json配置正确,能将TypeScript代码正确编译到lib目录,部署时会以lib/index.js作为入口文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:32:45