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

Angular17+AngularFire17 SSR项目构建ESM依赖警告求解决方案

解决Angular 17 + AngularFire 17构建时的CommonJS依赖警告

问题场景

项目环境:Angular 17、AngularFire 17,启用Service Worker(SW)和服务端渲染(SSR)
执行ng build命令时,出现以下CommonJS模块导致的优化 bailout警告:

▲ [WARNING] Module 'undici' used by 'node_modules/@firebase/auth/dist/node-esm/index.js' is not ESM

  CommonJS or AMD dependencies can cause optimization bailouts.
  For more information see: https://angular.io/guide/build#configuring-commonjs-dependencies


▲ [WARNING] Module '@grpc/grpc-js' used by 'node_modules/@firebase/firestore/dist/index.node.mjs' is not ESM

  CommonJS or AMD dependencies can cause optimization bailouts.
  For more information see: https://angular.io/guide/build#configuring-commonjs-dependencies


▲ [WARNING] Module '@grpc/proto-loader' used by 'node_modules/@firebase/firestore/dist/index.node.mjs' is not ESM

  CommonJS or AMD dependencies can cause optimization bailouts.
  For more information see: https://angular.io/guide/build#configuring-commonjs-dependencies


▲ [WARNING] Module 'faye-websocket' used by 'node_modules/@firebase/database/dist/node-esm/index.node.esm.js' is not ESM

  CommonJS or AMD dependencies can cause optimization bailouts.
  For more information see: https://angular.io/guide/build#configuring-commonjs-dependencies


▲ [WARNING] Module 'undici' used by 'node_modules/@firebase/functions/dist/esm-node/index.node.esm.js' is not ESM

  CommonJS or AMD dependencies can cause optimization bailouts.
  For more information see: https://angular.io/guide/build#configuring-commonjs-dependencies

▲ [WARNING] Module 'undici' used by 'node_modules/@firebase/storage/dist/node-esm/index.node.esm.js' is not ESM

  CommonJS or AMD dependencies can cause optimization bailouts.
  For more information see: https://angular.io/guide/build#configuring-commonjs-dependencies

项目核心依赖版本:

# Angular: 17.0.8
# animations, cli, common, compiler, compiler-cli, core, forms
# platform-browser, platform-browser-dynamic, platform-server
# router, service-worker, ssr

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1700.8
@angular-devkit/build-angular   17.0.8
@angular-devkit/core            17.0.8
@angular-devkit/schematics      17.0.8
@schematics/angular             17.0.8
rxjs                            7.8.1
typescript                      5.2.2

解决步骤

1. 配置允许的CommonJS依赖

打开项目根目录的angular.json文件,找到build配置节点下的options字段,添加allowedCommonJsDependencies数组,将所有警告涉及的模块列入其中:

"build": {
  "builder": "@angular-devkit/build-angular:application",
  "options": {
    // 保留原有配置
    "allowedCommonJsDependencies": [
      "undici",
      "@grpc/grpc-js",
      "@grpc/proto-loader",
      "faye-websocket"
    ]
  }
}

若项目包含SSR的服务端构建配置(通常为server目标),需同步在该配置的options中添加相同的allowedCommonJsDependencies数组。

2. 重新执行构建

运行ng build命令,此时相关警告会被抑制,构建将正常完成并生成dist文件夹。

补充说明

这些警告仅提示存在优化限制,不会导致构建失败。后续若Firebase相关依赖更新为纯ESM版本,可移除上述配置以恢复完整优化能力。

内容的提问来源于stack exchange,提问作者D_D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:17:02