NextJS部署到Vercel及本地构建均报ModuleNotFoundError找不到mongodb模块
报错根因
你遇到的ModuleNotFoundError并非是未安装mongodb第三方依赖,而是项目内自定义的util/mongodb工具文件的引入路径计算错误,属于相对路径层级不匹配问题。
排查修复步骤
- 确认文件实际存储位置
报错触发自路径为pages/api/pages/new的文件,你当前写的引入路径为../../../util/mongodb:该路径会从pages/api/pages/目录向上跳转3层到项目根目录,随后查找根目录下的util/mongodb文件。你可以先核对你的项目根目录下是否存在util文件夹,且文件夹内有命名为mongodb的js/ts文件。 - 修正引入路径
如果你不想计算相对路径层级,可以直接使用Next.js原生支持的绝对路径写法,将引入语句替换为import 实例名 from '@/util/mongodb'即可。如果你的util文件夹没有存放在根目录,对应调整相对路径的跳转层级即可:比如util文件夹存放在pages目录下,你就只需要向上跳转2层,引入路径改为../../util/mongodb。 - 验证修复效果
路径修改完成后,先在本地执行npm run build命令确认无报错,再推送代码到仓库重新部署Vercel即可。
额外检查点
你可以额外核对util/mongodb文件的文件名大小写是否和引入语句一致:Windows本地开发环境对文件名大小写不敏感,但是Vercel使用的Linux部署环境大小写完全敏感,比如你文件实际命名为MongoDB.js,引入时写的是mongodb.js,就会出现本地运行正常、部署报错的情况。
内容的提问来源于stack exchange,提问作者wasilikoslow
相关产品推荐
相关产品推荐

