部署Firebase Functions报错ERR_PACKAGE_PATH_NOT_EXPORTED求助
解决Firebase Functions部署错误:ERR_PACKAGE_PATH_NOT_EXPORTED
错误信息
部署Firebase Functions时遇到错误:
Failed to load function definition from source: Failed to generate manifest from function source: Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined in C:\Users\op23238\PepmateFinal\pepmate-functions\functions\node_modules\firebase\package.json
问题原因
你在后端Firebase Functions代码中引入了客户端firebase包,这个包是为浏览器/前端环境设计的,在Node.js的Functions运行环境中不需要使用。且最新版本的客户端firebase包修改了模块导出结构,直接通过require("firebase")调用会触发路径导出错误。
同时,后端创建用户的逻辑应该使用Firebase Admin SDK完成,而非客户端SDK。
解决方案
1. 移除客户端firebase依赖
打开functions目录下的package.json,删除firebase依赖项,然后执行卸载命令:
npm uninstall firebase
2. 修改代码使用Admin SDK实现注册逻辑
移除客户端firebase的初始化和调用,改用Admin SDK处理用户创建,修改后的代码如下:
const functions = require("firebase-functions"); const admin = require("firebase-admin"); const app = require("express")(); admin.initializeApp(); // 注册接口 app.post('/signup', async (req, res) => { const newUser = { email: req.body.email, password: req.body.password, confirmPassword: req.body.confirmPassword, handle: req.body.handle }; // 先验证密码一致性 if (newUser.password !== newUser.confirmPassword) { return res.status(400).json({ error: "密码不匹配" }); } try { // 使用Admin SDK创建用户 const userRecord = await admin.auth().createUser({ email: newUser.email, password: newUser.password }); // 可选:将用户handle存入Firestore或实时数据库 // await admin.firestore().collection('users').doc(userRecord.uid).set({ handle: newUser.handle }); return res.status(201).json({ message: `用户 ${userRecord.uid} 注册成功`}); } catch (err) { console.error(err); return res.status(500).json({ error: err.code }); } }); exports.api = functions.region("asia-south1").https.onRequest(app);
3. 重新部署函数
执行部署命令:
firebase deploy --only functions
内容的提问来源于stack exchange,提问作者Omkar Patil
相关产品推荐
相关产品推荐

