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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:12:45