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

MVC架构Node.js(Express)部署Vercel遇404及模块缺失问题求解

解决Node.js MVC应用部署到Vercel的404及模块缺失问题

一、处理"Error: Cannot find module './base64-vlq'"错误

这个错误通常是依赖安装不完整或缓存异常导致的,base64-vlq是source-map等依赖的子模块,可按以下步骤修复:

  • 本地清理依赖缓存:删除项目根目录下的node_modules文件夹、package-lock.json(或yarn.lock)文件,然后执行npm install(或yarn install)重新安装所有依赖。
  • 检查Vercel部署配置:在Vercel项目的「Build & Development Settings」中,确保构建命令包含完整的依赖安装步骤,比如设置为npm install && npm run build(若有构建流程),避免依赖安装跳过关键子模块。
  • 若使用pnpm,需在Vercel中开启pnpm支持(在项目设置的「Package Manager」中选择pnpm),或临时切换为npm/yarn验证是否是包管理器兼容性问题。

二、修复404错误

MVC架构的Node.js应用依赖服务器端路由,Vercel默认优先匹配静态资源,需通过vercel.json配置将请求转发到服务器入口:

  1. 正确配置vercel.json
    确保配置指向你的服务器入口文件(以根目录下的app.js为例):

    {
      "version": 2,
      "builds": [
        {
          "src": "app.js",
          "use": "@vercel/node"
        }
      ],
      "routes": [
        // 优先处理静态资源(若有public目录)
        {
          "src": "/public/(.*)",
          "dest": "/public/$1"
        },
        // 所有其他请求转发到服务器入口
        {
          "src": "/(.*)",
          "dest": "/app.js"
        }
      ]
    }
    

    注意:如果你的入口文件在src等子目录下,需修改src和dest的路径(比如src/app.js)。

  2. 验证服务器入口适配无服务器环境

    • 确保服务器监听Vercel分配的端口,不要硬编码端口号:
      const port = process.env.PORT || 3000;
      app.listen(port, () => {
        console.log(`Server running on port ${port}`);
      });
      
    • 避免长时间运行的后台进程,确保请求能被快速响应(Vercel无服务器函数有执行时长限制)。
  3. 检查package.json的start命令
    Vercel默认使用npm start启动应用,确保你的scripts配置指向正确入口:

    "scripts": {
      "start": "node app.js",
      // 其他自定义脚本...
    }
    

三、验证与重新部署

  1. 本地运行npm start,确认应用能正常响应所有路由,无404或模块缺失问题。
  2. 将修改后的代码(包括更新的vercel.json、重新安装的依赖)推送到仓库,触发Vercel重新部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:12:54