Firebase Data Connect 生成的 JavaScript SDK 安装与初始化指南(以 @firebasegen/default-connector 为例)
开发工具后端【免费下载链接】firebase-js-sdkFirebase Javascript SDK项目地址https://gitcode.com/gh_mirrors/fi/firebase-js-sdk点击查看免费下载Firebase Data Connect 官方 CLIfirebase-tools在完成 schema 与 connector 定义后会为每个 connector 自动生成一套 JavaScript/TypeScript SDKnpm 包形式并在产物目录中附带.guides/setup.md这类引导文档。本文以本仓库 e2e 样例中生成的firebasegen/default-connector为例完整讲解这类生成 SDK 的安装、initializeApp初始化、connectorConfig接入、模拟器联调以及底层validateArgs/getDataConnect的调用机制帮助你快速把生成 SDK 接入自己的 Firebase 项目。一、生成 SDK 的目录结构与定位在 e2e/data-connect/dataconnect-generated/js/default-connector 目录下可以看到一套完整的、可直接发布和引用的 npm 包结构文件/目录作用package.json声明包名firebasegen/default-connector、入口CJS/ESM/类型与peerDependenciesindex.cjs.jsCommonJS 入口对应exports.requireesm/index.esm.jsESM 入口对应exports.default与browser字段index.d.ts完整的 TypeScript 类型定义操作函数、变量与返回类型README.md生成 SDK 自带的使用说明.guides/setup.md本文聚焦的安装/初始化引导.guides/usage.md直接使用生成 SDK 的进阶用法其中package.json的关键字段package.json{ name: firebasegen/default-connector, version: 1.0.0, typings: index.d.ts, module: esm/index.esm.js, main: index.cjs.js, browser: esm/index.esm.js, exports: { .: { types: ./index.d.ts, require: ./index.cjs.js, default: ./esm/index.esm.js }, ./package.json: ./package.json }, peerDependencies: { firebase: ^10.14.0 || ^11.3.0 || ^12.0.0 } }peerDependencies说明该生成 SDK 依赖宿主项目中的firebase包Data Connect 运行时来自firebase/data-connect子路径因此安装时不要把它当作独立运行时依赖而应与项目自身的 firebase 版本匹配。二、安装生成 SDK包管理器与connector.yaml的关系.guides/setup.md指出如果用户尚未安装该 SDK应使用其偏好的 Node 包管理器在../package.json所在目录安装该包关于库的具体位置参见connector.yaml。这里../package.json相对的是.guides/所在层级即firebasegen/default-connector包目录的上一级在本仓库 e2e 场景中真正承载依赖的是 e2e/data-connect/package.json它声明了firebase: latest等依赖可直接在其目录执行npm install而 connector 的生成配置位于 connector.yamlconnectorId: default generate: javascriptSdk: outputDir: ../../dataconnect-generated/js/default-connector package: firebasegen/default-connectoroutputDir决定了 SDK 产物的落盘位置与上文目录结构一一对应package则决定了安装/导入时使用的包名。日常开发中你可以用firebase>import { initializeApp } from firebase/app; initializeApp({ // fill in your project config here using the values from your Firebase project or from the firebase_get_sdk_config tool from the Firebase MCP server. });即从firebase/app导入initializeApp传入你的 Firebase 项目配置对象。注释提示了两条获取配置的途径直接从 Firebase 控制台的项目设置中复制 Web App 配置使用 Firebase MCPModel Context Protocol服务器提供的firebase_get_sdk_config工具自动获取。本仓库的 e2e 测试 test.ts 展示了真实调用方式——配置从 firebase-js-config.json 读取并传给initializeAppimport { listMovies } from ./dataconnect-generated/js/default-connector; import * as json from ./firebase-js-config.json; import { initializeApp } from firebase/app; initializeApp(json); listMovies();注意配置文件中的字段如apiKey、projectId等需与你实际项目一致仓库内该 json 为空对象仅用于 e2e 环境占位。初始化 App 后即可继续使用生成 SDK 调用查询与变更。四、初始化 DataConnect 实例并接入生成 SDK.guides/setup.md进一步说明初始化完成后即可按需运行 SDKimport { ... } from firebasegen/default-connector;生成 SDK 的入口会导出connectorConfig常量它携带了 connector 标识信息。见 esm/index.esm.js 中的定义export const connectorConfig { connector: default, service: fdc-test, location: us-central1 };接入方式来自生成包自带的 README.mdimport { getDataConnect } from firebase/data-connect; import { connectorConfig } from firebasegen/default-connector; const dataConnect getDataConnect(connectorConfig);getDataConnect在 packages/data-connect/src/api/DataConnect.ts 中实现负责按ConnectorConfig解析出或复用已有的DataConnect服务实例而connectorConfig中的service/location对应 dataconnect.yaml 里的serviceId与location配置specVersion: v1beta serviceId: fdc-test location: us-central1 schema: source: ./schema datasource: postgresql: database: fdcdb connectorDirs: [./connector]五、连接本地模拟器Emulator默认情况下Data Connect 客户端连接生产服务。如需在本地开发调试可通过connectDataConnectEmulator指向模拟器import { connectDataConnectEmulator, getDataConnect } from firebase/data-connect; import { connectorConfig } from firebasegen/default-connector; const dataConnect getDataConnect(connectorConfig); connectDataConnectEmulator(dataConnect, localhost, 9399);connectDataConnectEmulator实现同样位于 packages/data-connect/src/api/DataConnect.ts。本仓库 e2e 场景中模拟器数据目录与数据源配置在 firebase.json{ emulators: { dataconnect: { dataDir: dataconnect/.dataconnect/pgliteData } }, dataconnect: { source: dataconnect } }另外从源码可见另一种模拟器接入方式DataConnect构造时会读取环境变量FIREBASE_DATA_CONNECT_EMULATOR_HOST见 packages/data-connect/src/api/DataConnect.ts设置该变量后客户端会自动切换为模拟器传输。六、生成 SDK 的底层调用机制源码印证为什么生成 SDK 的函数可以传DataConnect实例或直接不传关键在于validateArgs。以createMovieRef为例esm/index.esm.jsexport const createMovieRef (dcOrVars, vars) { const { dc: dcInstance, vars: inputVars } validateArgs( connectorConfig, dcOrVars, vars, true ); dcInstance._useGeneratedSdk(); return mutationRef(dcInstance, CreateMovie, inputVars); }; createMovieRef.operationName CreateMovie;validateArgspackages/data-connect/src/util/validateArgs.ts通过判断首参是否含enableEmulator特征字段来区分传了 DataConnect 实例与只传了变量未传实例时自动调用getDataConnect(connectorConfig)补全const dcFirstArg dcOrVars enableEmulator in dcOrVars; if (dcFirstArg) { dcInstance dcOrVars as DataConnect; realVars vars as Variables; } else { dcInstance getDataConnect(connectorConfig); realVars dcOrVars as Variables; }随后dcInstance._useGeneratedSdk()在 DataConnect.ts 中将_isUsingGeneratedSdk置为 true用于内部遥测区分调用方mutationRef/queryRefpackages/data-connect/src/api/Mutation.ts、packages/data-connect/src/api/query.ts构造引用快捷函数再调用executeMutation/executeQueryMutation.ts、query.ts真正执行。以listMovies为例的完整执行链为listMovies(dc?) → listMoviesRef(dc?) [validateArgs → getDataConnect 兜底] → queryRef(dcInstance, ListMovies) → executeQuery(ref) → 网络层发送 GraphQL 查询并返回 QueryPromise七、通过生成 SDK 调用查询与变更安装并初始化完成后即可按.guides/setup.md的指引按需运行 SDK。以本样例 connectorqueries.gql、mutations.gql中的ListMovies查询与CreateMovie变更为例import { getDataConnect, executeQuery } from firebase/data-connect; import { connectorConfig, listMoviesRef } from firebasegen/default-connector; const ref listMoviesRef(); // 不传实例时自动 getDataConnect(connectorConfig) const { data } await executeQuery(ref); console.log(data.movies);import { getDataConnect, executeMutation } from firebase/data-connect; import { connectorConfig, createMovieRef, CreateMovieVariables } from firebasegen/default-connector; const vars: CreateMovieVariables { title: My Movie, genre: Sci-Fi, imageUrl: https://example.com/poster.png }; const { data } await executeMutation(createMovieRef(vars)); console.log(data.movie_insert);对应类型定义index.d.tsexport interface CreateMovieVariables { title: string; genre: string; imageUrl: string; } export interface ListMoviesData { movies: ({ id: UUIDString; title: string; imageUrl: string; genre?: string | null } Movie_Key)[]; }也可以直接使用动作快捷函数如listMovies()、createMovie(vars)它们内部等价于构造 ref execute。两种方式都支持传入DataConnect实例作为首参便于复用同一实例例如指向模拟器的实例。关于优先使用受支持框架而非直接使用生成 SDK的建议可参见随包生成的 usage.md。八、小结.guides/setup.md虽然篇幅简短但它浓缩了 Firebase Data Connect 生成 SDK 接入的全部关键动作用偏好包管理器在../package.json目录安装生成包包位置由 connector.yaml 的outputDir/package决定用initializeApp初始化 Firebase App配置可通过firebase_get_sdk_config工具获取从firebasegen/default-connector导入connectorConfig并调用getDataConnect或直接调用生成的操作函数内部自动完成实例兜底本地调试通过connectDataConnectEmulator连接模拟器也支持FIREBASE_DATA_CONNECT_EMULATOR_HOST环境变量。其背后的生成 SDK ↔ 运行时协作模式——validateArgs参数归一化、connectorConfig配置传递、queryRef/mutationRef引用构造——均在 packages/data-connect/src 中有完整实现可在阅读生成代码时对照源码加深理解。赞分享开发工具后端【免费下载链接】firebase-js-sdkFirebase Javascript SDK项目地址https://gitcode.com/gh_mirrors/fi/firebase-js-sdk点击查看免费下载相关推荐Firebase Data Connect Web SDK 完整 API 指南从初始化、查询订阅到缓存与错误处理Firebase Data Connect Web SDK 完整 API 指南从初始化、查询订阅到缓存与错误处理 本文基于 Firebase JavaScri开发工具后端在 macOS 桌面应用中集成 Sentry Cocoa SDK以 Hammerspoon 为例的安装、初始化与源码级实践在 macOS 桌面应用中集成 Sentry Cocoa SDK以 Hammerspoon 为例的安装、初始化与源码级实践 导读 本文以 Hammerspoo桌面应用工作流自动化Firebase JavaScript SDK Cloud Firestore API 完全指南从实例初始化到聚合查询与离线持久化Firebase JavaScript SDK Cloud Firestore API 完全指南从实例初始化到聚合查询与离线持久化 导读 本文以 fireb开发工具后端上一篇高效人脸识别实战DeepFace模型训练与学习率优化策略下一篇GPT-LLM-Trainer媒体转型数字新闻和内容生产革命创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Keithley 2400源表自动化:SCPI+Python编写I-V扫描程序

Keithley 2400源表自动化:SCPI+Python编写I-V扫描程序

简介:这份Keithley 2400系列数字源表配套测试软件,面向电子器件测试、材料与半导体领域的工程师和科研人员,用于快速完成I-V、I-t、V-t等特性曲线采集与分析。压缩包共452个文件,以cab、msi、mst等安装组件为主,包含ex…

2026/10/16 2:06:47 阅读更多 →
LT8619C驱动代码剖析:HDMI转LVDS初始化与调试实战

LT8619C驱动代码剖析:HDMI转LVDS初始化与调试实战

简介:面向嵌入式显示接口开发的LT8619C/LT8618EXB驱动代码工程,主要用于HDMI输入转LVDS以及BT1102/BT656输出,最大支持4K30,适用于HDMI转接板、显示方案调试。压缩包共66个文件,大小约842KB,核心包含C源码和…

2026/10/16 2:06:47 阅读更多 →
N_m3u8DL-RE 流媒体下载:5 场景完整教程

N_m3u8DL-RE 流媒体下载:5 场景完整教程

N_m3u8DL-RE 流媒体下载:5 场景完整教程 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE 周末想离线…

2026/10/16 2:06:47 阅读更多 →

最新新闻

晶圆FT测试良率漂移:区分芯片本体缺陷与测试机台引入误差

晶圆FT测试良率漂移:区分芯片本体缺陷与测试机台引入误差

FT(Final Test,最终测试)是晶圆离开Fab前最后一次电学性能检验。FT良率出现下滑的时候,工程师面临的第一道关卡往往不是"怎么解决问题",而是"问题到底出在哪里"——是芯片本身工艺有问题&#xff…

2026/10/16 2:51:57 阅读更多 →
Godot 4.7 游戏引擎入门:节点场景体系、渲染器选型与首个 2D 角色(GDScript 实测)

Godot 4.7 游戏引擎入门:节点场景体系、渲染器选型与首个 2D 角色(GDScript 实测)

Godot 4.7 游戏引擎入门:节点场景体系、渲染器选型与首个 2D 角色(GDScript 实测) 想做游戏但被 Unity/Unreal 的体量劝退?Godot 是轻量替代的最优解:引擎本体几十 MB、解压即用(MIT 协议)&…

2026/10/16 2:51:57 阅读更多 →
Bootstrap3侧边导航栏实战:手写结构+响应式折叠方案

Bootstrap3侧边导航栏实战:手写结构+响应式折叠方案

简介:本资源是一份基于Bootstrap 3框架实现的响应式侧边导航栏完整示例,面向前端初学者与Web开发人员,解决在传统网页或管理后台中快速构建结构清晰、适配多端的垂直导航结构问题。压缩包共9个文件,包含1个核心HTML页面&#xff0…

2026/10/16 2:51:57 阅读更多 →
OpenClaw 飞书发图总显示异常?filePath 与 workspace 路径差异排查与 TaoToken 配置验证

OpenClaw 飞书发图总显示异常?filePath 与 workspace 路径差异排查与 TaoToken 配置验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 2:51:57 阅读更多 →
React表单实战指南:从受控组件到表单库选型

React表单实战指南:从受控组件到表单库选型

如果你写过一段时间的 React,一定会有这种感觉:别的组件都好说,唯独表单,每次写都觉得别扭。input明明自己会记住用户输入的内容,为什么我还要用value和onChange把它“控制”起来?今天选择框选完值&#xf…

2026/10/16 2:51:57 阅读更多 →
Agent落地三要素:记忆、目标与执行力的工程闭环

Agent落地三要素:记忆、目标与执行力的工程闭环

连着做了几个Agent项目之后,我越来越确定一件事:决定Agent上限的是模型本身,但决定它下限的,是记忆、目标与执行力这三块骨架。之前在做一个内部知识库问答项目时,最开始的版本就是把大模型接上对话接口,结…

2026/10/16 2:50:57 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →