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

Nest.js+NX monorepo中i18n文件夹未打包至dist目录问题求助

NX Monorepo下Nest.js集成i18n时i18n文件夹未输出到dist目录的排查修复

问题概述

在NX Monorepo架构中使用Nest.js集成i18n,编译后i18n文件夹未被输出到dist/apps/api目录,导致应用无法读取国际化资源。以下结合提供的配置文件给出针对性排查方案:

配置文件问题排查与修复

1. 修正nest-cli.json的资源路径配置

当前项目目录下的nest-cli.json中,assets.include路径指向错误:

"assets": [
  { 
    "include": "i18n/**/*", 
    "watchAssets": true, 
    "outDir": "dist/apps/api" 
  }
]

根据项目结构,i18n文件夹位于apps/api/src下,因此需要调整include为相对nest-cli.json的正确路径:

"assets": [
  { 
    "include": "src/i18n/**/*", 
    "watchAssets": true, 
    "outDir": "dist/apps/api" 
  }
]

2. 补充NX项目project.json的资源配置

NX优先读取项目目录(apps/api)下project.json的构建配置,需在build目标中添加i18n资源的复制规则:

{
  "targets": {
    "build": {
      "executor": "@nrwl/nest:build",
      "options": {
        "outputPath": "dist/apps/api",
        "assets": [
          {
            "input": "apps/api/src/i18n",
            "glob": "**/*",
            "output": "./i18n"
          }
        ]
      }
    }
  }
}

3. 确保tsconfig.app.json包含i18n资源

检查apps/api/tsconfig.app.json的include配置,确认未排除i18n文件夹:

{
  "include": ["src/**/*"],
  "exclude": ["node_modules", "dist", "src/**/*.spec.ts", "src/**/*.test.ts"]
}

4. 调整I18nModule的资源路径

编译后__dirname指向dist/apps/api/src/app,原路径path.join(__dirname,'/../i18n/')会指向dist/apps/api/src/i18n,但我们的资源会输出到dist/apps/api/i18n,因此需要修正路径:

I18nModule.forRoot({
  fallbackLanguage: 'tr',
  loaderOptions: {
    path: path.join(__dirname, '../../i18n/'),
    watch: true,
  },
  resolvers: [
    { use: QueryResolver, options: ['lang'] },
    AcceptLanguageResolver,
  ],
}),

5. 清除NX缓存并重新构建

NX的缓存机制可能导致旧配置生效,执行以下命令重置缓存后重新构建:

nx reset
nx build api

内容的提问来源于stack exchange,提问作者Ramazan Sağır

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:32:55