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

Angular模块联邦WebSocket连接失败问题求助

问题分析

配置Angular模块联邦时,修改angular.json的启动选项,将publicHost替换为host并设置值为localhost.xxx.com:4200,配置内容如下:

"options": {
   "port": 4200,
   "host": "localhost.xxx.com:4200",
   "extraWebpackConfig": "webpack.config.js"
 },

运行项目后,浏览器控制台抛出WebSocket连接失败错误:

WebSocket connection to 'ws://localhost.xxx.com:4200/ng-cli-ws' failed: 

将配置改回publicHost并设置为http://localhost:4200后,错误消失。

解决建议

1. 明确host与publicHost的职责

  • host是DevServer绑定的本地网络接口,仅需填写域名或IP,不能包含端口(端口由单独的port字段配置)。你当前的host配置带了端口,导致DevServer解析异常,进而引发WebSocket连接失败。
  • publicHost是浏览器访问应用的公开地址,需填写完整的协议+域名+端口(如http://localhost.xxx.com:4200),用于告知浏览器正确的资源访问路径,包括WebSocket连接地址。

2. 修正angular.json配置(优先方案)

保留publicHost指定公开访问地址,同时用host绑定本地接口,正确配置如下:

"options": {
   "port": 4200,
   "host": "localhost.xxx.com",
   "publicHost": "http://localhost.xxx.com:4200",
   "extraWebpackConfig": "webpack.config.js"
 },

此配置下,DevServer会绑定到localhost.xxx.com:4200,同时告知浏览器使用正确的WebSocket地址,避免连接错误。

3. Webpack配置自定义WebSocket地址(可选)

如果模块联邦有特殊需求,需通过Webpack覆盖默认配置,可在webpack.config.js中添加DevServer的WebSocket配置:

module.exports = {
  devServer: {
    client: {
      webSocketURL: 'ws://localhost.xxx.com:4200/ng-cli-ws'
    }
  }
};

但优先推荐使用Angular CLI原生配置,减少额外配置带来的冲突风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:12:37