使用Firebase Admin连接时遇Webpack模块解析错误求助
问题描述
尝试通过Firebase Admin权限连接Firebase时出现模块解析错误,相关代码及错误信息如下:
firebase.js
import * as admin from "firebase-admin"; const firebaseConfig = { // 此处为Firebase配置信息 }; // 初始化Firebase const app = admin.initializeApp(firebaseConfig); module.exports = app;
controller.js
import app from '../../firebase'; const db = app.firestore(); const addUser = async (req, res, next) => { console.log(req.body); try { console.log("添加新用户"); const data = req.body; await db.collection("Users").doc().set(data); res.status(201).json({ message: "记录保存成功" }); } catch (error) { res.status(400).json({ message: error.message }); } }; module.exports = { addUser };
错误信息
ERROR in ./node_modules/firebase-admin/lib/app/firebase-namespace.js 84:65 模块解析失败:意外的标记 (84:65) 可能需要合适的加载器来处理该文件类型,当前未配置任何加载器来处理此文件。 | // use the native Promise and then remove this. | this.Promise = Promise; > this.INTERNAL = new FirebaseNamespaceInternals(appStore ?? new lifecycle_1.AppStore());
解决方案
错误根源是firebase-admin库代码中使用了ES2020引入的空值合并运算符??,而你的Webpack配置默认跳过了node_modules目录的语法转译,导致无法识别该新语法。
解决步骤:
- 安装必要的Babel依赖:
npm install @babel/core @babel/preset-env babel-loader --save-dev - 修改Webpack配置,让
babel-loader处理firebase-admin模块:module.exports = { // ...其他配置项 module: { rules: [ { test: /\.js$/, // 排除node_modules但例外firebase-admin exclude: /node_modules(?!\/firebase-admin)/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } } } ] } }; - 若需要更精准的语法支持,可在
@babel/preset-env中添加targets字段,指定你的运行环境版本。
内容的提问来源于stack exchange,提问作者hussain
相关产品推荐
相关产品推荐

