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

部署集成AdminJS的NestJS应用至Vercel时遇错误

NestJS集成AdminJS部署Vercel时缺失JSON文件的问题

报错信息

[Nest] 8  - 01/17/2024, 10:32:50 AM  ERROR 
[ExceptionHandler] Cannot find module 
'/var/task/node_modules/adminjs/lib/locale/de/translation.json' imported from 
/var/task/node_modules/adminjs/lib/locale/index.js
Error: Cannot find module 
'/var/task/node_modules/adminjs/lib/locale/de/translation.json' imported from 
/var/task/node_modules/adminjs/lib/locale/index.js
at new NodeError (node:internal/errors:405:5)
at finalizeResolution (node:internal/modules/esm/resolve:332:11)
at moduleResolve (node:internal/modules/esm/resolve:995:10)
at moduleResolveWithNodePath (node:internal/modules/esm/resolve:939:12)
at defaultResolve (node:internal/modules/esm/resolve:1181:79)
at nextResolve (node:internal/modules/esm/loader:163:28)
at ESMLoader.resolve (node:internal/modules/esm/loader:835:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
at link (node:internal/modules/esm/module_job:76:36)
INIT_REPORT Init Duration: 1759.70 ms   Phase: init Status: error   Error Type: 
Runtime.ExitError

相关类似问题

  • Next.js + AdminJS 遇到相同问题
  • Express + AdminJS 遇到相同问题

版本信息

  • NestJS: 10.0.0
  • AdminJS: 7.5.2
  • Node.js 18.x

排查发现

部署到Vercel时,AdminJS依赖的.json文件在构建产物中缺失,本地构建的node_modules包含这些文件,但Vercel构建后的产物中没有:
本地与Vercel构建中node_modules对比

解决方案

1. 配置Vercel保留指定JSON文件

在项目根目录创建vercel.json,添加函数配置,明确指定需要包含的AdminJS语言JSON文件:

{
  "functions": {
    "dist/main.js": {
      "includeFiles": "node_modules/adminjs/lib/locale/**/*.json"
    }
  }
}

注意:路径需匹配你的NestJS构建后入口文件(通常是dist/main.js)。

2. 手动注册所需语言,避免自动加载全部语言

在AdminJS初始化时,仅导入并注册你实际使用的语言包,跳过未使用的语言(比如报错中的德语):

import AdminJS from 'adminjs';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

// 仅导入需要的语言文件
import enLocale from 'adminjs/lib/locale/en/translation.json';
import zhCNLocale from 'adminjs/lib/locale/zh-CN/translation.json';

// 注册语言
AdminJS.registerLocale('en', enLocale);
AdminJS.registerLocale('zh-CN', zhCNLocale);

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(process.env.PORT || 3000);
}
bootstrap();

3. 构建脚本中复制缺失文件

修改package.json的构建脚本,在构建完成后复制AdminJS的语言JSON文件到产物目录:

{
  "scripts": {
    "build": "nest build",
    "vercel-build": "npm run build && cp -r node_modules/adminjs/lib/locale dist/node_modules/adminjs/lib/locale"
  }
}

此方法确保构建产物中包含所需的JSON文件,不过需要确认dist目录下的node_modules结构是否符合Vercel的运行要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:05:15