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

在IIS部署Angular 11 SSR复杂应用时遇模块找不到错误,求解决

解决IIS部署Angular SSR复杂应用的模块找不到问题

1. 核对Angular构建流程

  • 一定要用正确命令完成SSR构建:ng build --configuration production && ng run [你的项目名]:server:production,不能只构建客户端包,必须同时生成服务端渲染所需的全套文件。
  • 打开angular.json检查server配置的outputPath,确认服务端和客户端构建产物的目录结构正确,保证IIS能访问到所有静态资源。

2. 修复模块路径与IIS静态资源规则

  • 检查web.config里的静态文件处理规则,确保vendors~开头的chunk文件请求不会被拦截,可添加专门的静态文件路由:
    <rule name="Static Files" stopProcessing="true">
      <match url="([\S]+[.](js|css|png|jpg|jpeg|gif|ico|svg))" />
      <action type="Rewrite" url="{R:1}" />
    </rule>
    
  • 确认部署到IIS的文件夹里确实存在报错的vendors~xxx-7b482290.js文件,如果没找到,重新构建并完整上传dist目录下的所有内容,包括客户端和服务端子文件夹。

3. 处理Buffer()弃用警告

  • 这个警告来自Node.js环境,是因为Angular SSR依赖的部分库还在使用旧的Buffer API。在服务端入口文件(一般是server.ts)顶部加一段兼容代码:
    (global as any).Buffer = global.Buffer || require('buffer').Buffer;
    
  • 也可以升级相关依赖包,打开package.json查看依赖版本,更新到支持Node.js当前Buffer API的版本。

4. 排查NetworkError根源

  • 检查IIS应用池的权限,确保它能访问部署目录下的所有文件,尤其是服务端渲染的入口文件(比如server.js)。
  • 确认IIS已经安装URL Rewrite模块,这是Angular SSR部署的必需组件,没装的话先补上。
  • 查看IIS日志(默认路径C:\inetpub\logs\LogFiles),找到对应NetworkError的请求记录,看具体错误代码(比如404、500),定位是资源找不到还是服务端运行出错。

5. 验证web.config的SSR路由配置

  • 确保web.config里的SSR路由规则正确,示例如下:
    <rule name="SSR" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="server.js" />
    </rule>
    
  • 注意server.js的路径要和服务端构建产物的入口文件对应,如果入口是main.js,要同步修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:20:27