NextJS+GenKit+Firebase部署失败:依赖冲突问题求助
部署NextJS + GenKit + Firebase Admin应用时的peer依赖冲突解决
问题概述
部署基于NextJS、GenKit和Firebase Admin的RAG聊天机器人到Firebase时遭遇peer依赖冲突,本地运行正常,已尝试将Firebase、GenKit和Firebase Tools更新至最新版本,问题仍存在。
错误日志
Build failed with status: FAILURE and message: npm error code ERESOLVE npm error ERESOLVE could not resolve npm error npm error While resolving: @genkit-ai/firebase@0.9.7 npm error Found: genkit@0.9.6 npm error node_modules/genkit npm error genkit@"^0.9.4" from the root project npm error peer genkit@"0.9.6" from @genkit-ai/googleai@0.9.6 npm error node_modules/@genkit-ai/googleai npm error @genkit-ai/googleai@"^0.9.4" from the root project npm error 1 more (@genkit-ai/vertexai) npm error npm error Could not resolve dependency: npm error peer genkit@"0.9.7" from @genkit-ai/firebase@0.9.7 npm error node_modules/@genkit-ai/firebase npm error @genkit-ai/firebase@"^0.9.7" from the root project npm error npm error Conflicting peer dependency: genkit@0.9.7 npm error node_modules/genkit npm error peer genkit@"0.9.7" from @genkit-ai/firebase@0.9.7 npm error node_modules/@genkit-ai/firebase npm error @genkit-ai/firebase@"^0.9.7" from the root project npm error npm error Fix the upstream dependency conflict, or retry npm error this command with --force or --legacy-peer-deps npm error to accept an incorrect (and potentially broken) dependency resolution. npm error npm error npm error For a full report see: npm error /www-data-home/.npm/_logs/2024-12-05T20_21_42_782Z-eresolve-report.txt npm error A complete log of this run can be found in: /www-data-home/.npm/_logs/2024-12-05T20_21_42_782Z-debug-0.log. For more details see the logs at https://console.cloud.google.com/cloud-build/builds;region=us-east1/a980b836-aa34-44bf-b7d3-4487e45b59bb?project=*******. Functions deploy had errors with the following functions: **********(us-east1) i functions: cleaning up build files... Error: There was an error deploying functions
代码示例
import { devLocalIndexerRef } from "@genkit-ai/dev-local-vectorstore"; import { textEmbedding004, vertexAI } from "@genkit-ai/vertexai"; import { genkit } from "genkit"; import {} from "@genkit-ai/core"; import { initializeApp, AppOptions, cert, ServiceAccount, } from "firebase-admin/app"; // firebase admin import { getFirestore } from "firebase-admin/firestore";// firebase admin import { defineFirestoreRetriever } from "@genkit-ai/firebase"; const ai = genkit({ plugins: [ vertexAI({ googleAuth: { projectId: "********", scopes: ["********"], credentials: { client_id: "********", project_id: "********", client_email: "********", client_secret: "", private_key: "********" }, }, projectId: "********", location: "********", }), ], }); const credentials: ServiceAccount = { projectId: "********", privateKey: "********", clientEmail: "********", }; const options: AppOptions = { credential: cert(credentials), }; const app = initializeApp(options); export const faqRetriever = defineFirestoreRetriever(ai, { name: "faqRetriever", firestore: getFirestore(app), collection: "studentFaq", contentField: "text", vectorField: "embedding", embedder: textEmbedding004, // Import from '@genkit-ai/googleai' or '@genkit-ai/vertexai' distanceMeasure: "COSINE", // "EUCLIDEAN", "DOT_PRODUCT", or "COSINE" (default) }); export const articleIndexer = devLocalIndexerRef("studentQA"); export const chunkingConfig = { minLength: 1000, maxLength: 2000, splitter: "sentence", overlap: 100, delimiters: "", // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any; // type declaration above, consider updating types
环境信息
- nvm版本:0.39.1
- Node.js版本:v20.18.1
- macOS版本:14.4.1 (23E224)
- Firebase CLI:最新版
部署步骤
- 执行
firebase init,选择Hosting选项 - 选择使用实验性框架,指定NextJS并启用TypeScript
- 执行
firebase deploy
解决方案
方法1:统一GenKit生态包版本
错误核心是@genkit-ai/firebase@0.9.7要求genkit@0.9.7,但项目中genkit为0.9.6,且其他GenKit插件依赖0.9.6。修改package.json,将所有GenKit相关包版本统一:
{ "dependencies": { "genkit": "^0.9.7", "@genkit-ai/firebase": "^0.9.7", "@genkit-ai/vertexai": "^0.9.7", "@genkit-ai/googleai": "^0.9.7" // 其他依赖保留原有配置 } }
执行以下命令重新安装依赖后部署:
rm -rf node_modules package-lock.json npm install firebase deploy
方法2:启用legacy peer依赖模式
若统一版本不可行,可强制npm跳过peer依赖检查。修改firebase.json,在构建阶段添加--legacy-peer-deps参数:
{ "hosting": { "source": ".", "frameworksBackend": { "region": "us-east1" }, "predeploy": ["npm install --legacy-peer-deps", "npm run build"] } }
之后重新执行firebase deploy。
方法3:降级@genkit-ai/firebase版本
若升级genkit到0.9.7引发其他冲突,可将@genkit-ai/firebase降级至0.9.6,与当前genkit版本匹配:
{ "dependencies": { "@genkit-ai/firebase": "^0.9.6" } }
重新安装依赖后部署。
内容的提问来源于stack exchange,提问作者AJF
相关产品推荐
相关产品推荐

