本地运行AdminBro.bundle路径正常,部署Vercel提示文件不存在是什么原因?
问题原因
这个报错是Vercel部署环境的运行目录结构和本地不一致、自定义组件文件未被打包到Vercel Lambda运行时目录两个原因共同导致的:
- 你当前用的相对路径是基于项目根目录寻址的,但Vercel Lambda的运行时工作目录和本地开发的根目录不匹配,相对路径定位失效
- Vercel构建时默认会剔除未被静态引用的源码文件,你传入的字符串路径不会被Vercel识别为依赖,组件文件不会被打包到最终的运行环境中
解决方案
改用绝对路径定位组件文件
用Node内置的path模块配合__dirname生成和当前文件位置绑定的绝对路径,避免运行目录差异导致的寻址错误。修改你routes/admin.js里的代码:// 顶部先导入path模块 const path = require('path') // 原有配置修改为 imagePath: { isVisible: { list: false, filter: false, show: true, edit: true }, components: { show: AdminBro.bundle( path.resolve(__dirname, '../components/admin-imgPath-component.jsx') ), }, },注意调整
../的层级,保证从admin.js所在的routes目录出发,能正确指向组件文件的位置。配置Vercel强制包含组件目录
在项目根目录新建/修改vercel.json配置文件,指定要把自定义组件目录打包进Lambda运行包:{ "functions": { "app.js": { // 替换为你项目的实际入口文件路径,比如api/index.js "includeFiles": "components/**/*" } } }额外排查项
- 检查项目的
.gitignore和.vercelignore文件,确认components目录没有被加入忽略列表 - 如果你升级了AdminBro到改名后的AdminJS版本,确保路径配置符合新版的组件注册规范
- 检查项目的
内容的提问来源于stack exchange,提问作者Ruthvik Chandra Vanam
相关产品推荐
相关产品推荐

