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

部署Node.js Express至Vercel时出现模块未找到错误求助

Node.js部署Vercel出现ERR_MODULE_NOT_FOUND错误的排查与解决

错误核心分析

从日志看,问题是/var/task/routes/Users.routes.js无法找到/var/task/Controllers/Users.controller.js模块,这是Vercel部署Node.js服务时的典型路径或文件匹配问题,下面是具体排查和解决步骤:

一、优先排查大小写问题

Vercel的运行环境是Linux,文件名和目录名严格区分大小写,但本地Windows/macOS默认不区分,很容易出现本地正常、部署报错的情况:

  • 检查你的项目实际目录名:是controllers(小写)还是Controllers(大写)?
  • 检查实际文件名:是users.controller.js还是Users.controller.js?
  • 修正Users.routes.js中的导入路径,确保和实际文件完全一致,比如如果是小写目录和文件名,修改为:
import { get_id, addUser, addFriends, getFriends, getPendingFriends, queryUser, startChat, getChats, getUser, getUserServers, changeUserName, createServers, joinServers } from "../controllers/users.controller.js";

二、检查Vercel打包配置与文件路径

  1. 入口文件路径匹配
    看你的vercel.json指定入口是./index.js,但package.json的watch脚本指向src/index.js,如果你的实际代码都在src目录下,Vercel可能没正确打包到所需文件:
    • 修正vercel.json的配置,指向正确的入口文件:
    {
        "builds": [
            {
                "src": "./src/index.js",
                "use": "@vercel/node"
            }
        ],
        "routes": [
            {
                "src": "/(.*)",
                "dest": "/src/index.js"
            }
        ]
    }
    
  2. 确认文件层级
    确保Controllers目录和routes目录在同一层级,且都在Vercel打包的范围内(不要放在.gitignore里)。

三、排查Babel配置干扰

你使用了babel-plugin-module-resolver,如果.babelrc或babel.config.json中配置了模块别名,可能导致Vercel构建时路径解析错误。可以暂时移除别名配置,改用相对路径测试,确认是否是别名导致的问题。

四、Vercel部署Node.js服务器的实用建议

  • 环境变量管理:不要将.env文件提交到仓库,在Vercel控制台的「项目设置-环境变量」中添加生产所需的环境变量。
  • 依赖校验:确保package.json的dependencies包含所有生产环境需要的包,devDependencies只放开发工具(如nodemon、babel-watch),Vercel默认会跳过devDependencies的安装。
  • 本地预测试:部署前先在本地执行npm install && npm run start,模拟生产环境运行,确保没有问题再推送。
  • 本地调试:安装Vercel CLI工具,执行vercel dev可以在本地模拟Vercel的运行环境,提前发现路径或依赖问题。
  • 日志排查:Vercel控制台的「函数-日志」可以查看实时错误信息,部署后如果报错优先看这里的详细堆栈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:46:09