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

如何成功部署Nuxtjs+Firebase应用到Vercel?解决函数超限问题

解决Nuxt.js + Firebase部署Vercel时Serverless函数体积超限问题

问题分析

你的应用是静态Nuxt项目(target:static、ssr:false),但部署时生成的Serverless函数体积达50.5MB,超过Vercel的50MB限制。核心原因是当前配置错误生成了不必要的Serverless函数,且Firebase SDK未按需加载导致包体积过大。

具体解决方案

1. 启用Firebase懒加载,减少SDK打包体积

修改nuxt.config.js中的Firebase配置,将lazy设为true,这样只会按需加载你用到的Firebase服务(Firestore、Storage),避免打包完整SDK:

firebase: {
  lazy: true, // 原配置为false,改为true
  onFirebaseHosting: false,
  terminateDatabasesAfterGenerate: true,
  // 其他config、services配置保持不变
}

2. 修改Vercel配置,改用静态部署模式

你的项目是纯静态站点,无需生成Serverless函数。修改vercel.json,使用Vercel静态构建器替代Nuxt专属构建器:

{
  "builds": [
    {
      "src": "package.json",
      "use": "@vercel/static-build",
      "config": {
        "distDir": "dist"
      }
    }
  ]
}

Vercel会自动执行package.json中的generate命令,生成并部署dist目录下的静态文件,彻底规避Serverless函数体积问题。

3. 优化依赖配置

将@nuxtjs/vercel-builder移到devDependencies(生产环境无需此依赖),修改package.json:

"dependencies": {
  "@nuxtjs/date-fns": "^1.5.0",
  "@nuxtjs/firebase": "^8.2.0",
  "core-js": "^3.19.3",
  "dotenv": "^16.0.3",
  "firebase": "9.6.2",
  "fs": "^0.0.1-security",
  "nuxt": "^2.15.8",
  "vue": "^2.6.14",
  "vue-server-renderer": "^2.6.14",
  "vue-template-compiler": "^2.6.14",
  "webpack": "^4.46.0"
},
"devDependencies": {
  "@nuxtjs/vercel-builder": "0.22.1",
  "push-dir": "^0.4.1",
  "sass": "^1.54.8",
  "sass-loader": "^10.1.1"
}

4. 启用Nuxt构建拆分优化

在nuxt.config.js的build配置中添加代码拆分,进一步减小单个文件体积:

build: {
  splitChunks: {
    layouts: true,
    pages: true,
    commons: true
  },
  // 原有的sass loader配置保持不变
}

部署验证

修改完成后,推送到GitHub仓库,触发Vercel自动部署。此时Vercel会生成纯静态资源,不再创建Serverless函数,体积超限问题即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:25:14