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

SvelteKit执行npm run build时报@firebase/database-compat入口条件错误

解决方案

这个报错是SvelteKit构建时vite对firebase包的导出条件匹配失败导致的,你可以按以下步骤排查修复:

  1. 修正firebase-admin的导入位置
    firebase-admin是服务端专属SDK,绝对不能在客户端代码(会下发到浏览器运行的+page.svelte、+layout.svelte等文件)中导入,只能在服务端专属文件(后缀为.server.js/.server.ts的文件、+server.js/ts接口文件、src/lib/server目录下的文件)中使用。先检查所有导入firebase-admin的代码,确认没有误写到客户端侧。
  2. 修改svelte.config.js配置
    在配置文件中添加vite的ssr外部化排除规则,让vite在服务端构建时统一处理firebase相关包的依赖:
import adapter from '@sveltejs/adapter-vercel';
import preprocess from 'svelte-preprocess';

/** @type {import('@sveltejs/kit').Config} */
const config = {
  preprocess: preprocess(),
  kit: {
    adapter: adapter(),
    vite: {
      ssr: {
        noExternal: ['firebase', '@firebase/*', 'firebase-admin']
      },
      resolve: {
        // 手动添加firebase需要的导出匹配条件
        conditions: ['node', 'import', 'module']
      }
    }
  }
};

export default config;
  1. 优化firebase导入逻辑
    避免导入完整的firebase compat包,改用按需导入你实际用到的firebase服务,比如只需要认证和云Firestore的话就不要引入realtime database相关的模块,避免触发./standalone入口的加载逻辑:
// 正确示例:按需导入
import { initializeApp } from 'firebase/app';
import { getAuth } from 'firebase/auth';
import { getFirestore } from 'firebase/firestore';
  1. 重建依赖缓存
    如果以上修改后还是报错,删除项目根目录的node_modules文件夹、package-lock.json文件后重新执行npm install,再运行npm run build测试。

开头的firebase-admin未导出package.json属于警告信息,不影响实际构建流程,无需单独处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:15:03