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

Angular 12 SSR结合i18n双语言(英/韩)部署配置问题求解

Angular 12 SSR+i18n 双语言部署解决方案

问题根源

你当前的报错核心是硬编码了en语言的资源路径,访问/ko路径时服务端仍从/en目录加载静态资源和模板,导致前端资源404、页面加载失败。

具体修改步骤

1. 调整 server.ts 核心逻辑

删除原来硬编码的distFolder定义、server.set('views', distFolder)、server.use(express.static(distFolder))代码,替换为以下逻辑:
首先导入依赖:

import { existsSync } from 'fs';
import { APP_BASE_HREF } from '@angular/common';

新增语言检测、动态资源匹配、SSR渲染逻辑:

// 定义支持的语言和默认语言
const supportedLangs = ['en', 'ko'];
const defaultLang = 'en';

// 语言跳转中间件:根路径自动跳转默认语言,非法语言路径跳转默认语言
server.use((req, res, next) => {
  const pathLang = req.path.split('/')[1];
  if (req.path === '/') {
    return res.redirect(301, `/${defaultLang}`);
  }
  if (!supportedLangs.includes(pathLang)) {
    return res.redirect(301, `/${defaultLang}${req.path}`);
  }
  next();
});

// 动态托管对应语言的静态资源
server.get('*.*', (req, res, next) => {
  const pathLang = req.path.split('/')[1] as 'en'|'ko';
  const langDistPath = join(process.cwd(), `dist/ecokrypt-uiapp/browser/${pathLang}`);
  const targetFilePath = join(langDistPath, req.path.slice(pathLang.length + 1));
  if (existsSync(targetFilePath)) {
    return res.sendFile(targetFilePath);
  }
  next();
});

// 动态渲染对应语言的SSR页面
server.get('*', (req, res) => {
  const pathLang = req.path.split('/')[1] as 'en'|'ko';
  const langDistPath = join(process.cwd(), `dist/ecokrypt-uiapp/browser/${pathLang}`);
  const indexHtml = existsSync(join(langDistPath, 'index.original.html')) ? 'index.original.html' : 'index.html';
  // 动态加载对应语言的服务端入口
  const AppServerModule = require(`./dist/ecokrypt-uiapp/server/${pathLang}/main`).AppServerModule;

  res.render(indexHtml, {
    req,
    providers: [{ provide: APP_BASE_HREF, useValue: `/${pathLang}` }]
  });
});

如果TypeScript提示动态导入的类型错误,在require行上方加// @ts-ignore忽略即可。

2. 确认angular.json配置

确保projects -> 你的项目名 -> architect -> build -> options下没有硬编码baseHref配置,localize: true配置在build和server目标下都已正确添加。

3. 执行构建启动

执行常规SSR构建命令即可:

ng build --prod
ng run 你的项目名:server:prod

构建完成后启动Node服务即可正常访问:

  • 访问mysitename.com自动301跳转到mysitename.com/en
  • 访问mysitename.com/ko正常加载韩文SSR页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:06:04