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

Svelte Kit配合TypeScript使用Firestore时出现exports is not defined报错如何解决

问题根因

该报错由SvelteKit底层的Vite构建器偶发加载了Firestore面向Node.js环境的CommonJS格式产物导致,浏览器原生不支持CommonJS的exports语法,所以抛出引用错误。

解决方案

  • 步骤1:调整Vite配置,强制指定Firebase相关包的构建规则
    在项目根目录的vite.config.ts中添加如下配置:
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';

export default defineConfig({
  plugins: [sveltekit()],
  // 预构建配置,避免加载Node版本的Firestore产物
  optimizeDeps: {
    include: ['@firebase/firestore', 'firebase/firestore'],
    exclude: ['@firebase/firestore/dist/index.node.cjs.js']
  },
  // SSR配置,避免服务端渲染时误处理Firebase客户端包
  ssr: {
    noExternal: ['@firebase/firestore', 'firebase']
  }
});
  • 步骤2:补充客户端环境判断,确保Firestore初始化逻辑仅在浏览器侧执行
    你已经将逻辑放在onMount生命周期内,可额外增加SvelteKit内置的browser环境变量判断,避免极端场景下服务端执行该逻辑:
import { browser } from '$app/environment';
import { onMount } from 'svelte';
import { initializeApp } from 'firebase/app';
import { getFirestore } from 'firebase/firestore';

const firebaseConfig = {
  // 替换为你的Firebase项目配置
};

onMount(() => {
  if (!browser) return;
  const app = initializeApp(firebaseConfig);
  const db = getFirestore(app);
  // 后续Firestore操作逻辑
});
  • 步骤3:清理Vite缓存重启项目
    删除项目node_modules目录下的.vite缓存文件夹,再重新执行npm run dev启动项目即可消除偶发的缓存导致的报错。

  • 步骤4:升级Firebase SDK到最新版本
    如果上述操作后仍然报错,可执行npm install firebase@latest升级Firebase SDK,旧版本SDK对ESM构建工具的兼容性较差,升级后可解决大部分兼容问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:39:02