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

Angular 17用application构建器时,预渲染依赖API路由致构建失败求助

Angular 17 SSR 预渲染相关问题解答

1. 能否阻止预渲染阶段?

可以直接通过修改 angular.json 中的构建配置禁用预渲染:
找到项目对应的 architect > build 节点,将 prerender 选项设为 false 即可:

{
  "projects": {
    "[app-name]": {
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:application",
          "options": {
            "prerender": false,
            "server": "src/main.server.ts",
            "outputPath": "dist/[app-name]",
            // 其他原有配置...
          }
        }
      }
    }
  }
}

修改后执行 npm run build,只会构建浏览器端与服务端代码,不会触发预渲染流程。

2. 能否让服务在预渲染阶段前启动?

可以通过自定义 npm 脚本实现服务启动与预渲染的串行执行,步骤如下:

  1. 安装辅助工具:
npm install --save-dev concurrently wait-on
  1. 在 package.json 中添加自定义脚本:
{
  "scripts": {
    "start-api": "cd ../[你的API项目路径] && npm start", // 替换为实际启动API服务的命令
    "wait-api": "wait-on http://localhost:[API服务端口]", // 替换为API服务的实际地址
    "build-prerender": "concurrently -k -s first \"npm run start-api\" \"npm run wait-api && npm run build\""
  }
}

执行 npm run build-prerender 时,会先启动 API 服务,等待服务就绪后再触发 Angular 构建与预渲染,确保预渲染时能正常请求 API。

3. 操作是否存在错误?

你的操作本身没有错误,问题源于 Angular 17 新构建器与旧构建器的默认行为差异:

  • 旧构建器(如 @angular-devkit/build-angular:server)默认不开启预渲染
  • 新的 @angular-devkit/build-angular:application 构建器为优化首屏性能,默认会对应用路由执行预渲染

只需根据自身场景调整构建配置即可,无需质疑操作流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:02:16