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

Vercel部署Express项目时Node内置模块无法解析错误

解决Vercel部署Express+Passport项目时内置模块找不到的问题

原因分析

本地Node.js环境会自动识别crypto、util、http这类内置模块,但Vercel若误将后端项目按前端流程打包,或是Serverless函数的Runtime配置不正确,就会出现模块解析失败的问题。

解决方案

1. 配置Vercel识别Node.js后端

在项目根目录创建/修改vercel.json,明确指定用Node.js Runtime处理Express项目:

{
  "version": 2,
  "builds": [
    {
      "src": "server.js", // 替换成你的Express入口文件路径
      "use": "@vercel/node"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "server.js"
    }
  ]
}

这个配置会让Vercel跳过前端打包流程,直接用Node.js环境运行你的后端代码。

2. 更新Passport相关依赖

旧版本的Passport依赖可能在新环境下存在兼容问题,执行命令更新:

npm update passport passport-local passport-local-mongoose

3. 若用Webpack打包后端(可选)

如果项目用Webpack打包后端代码,需在webpack.config.js中添加Node环境配置:

module.exports = {
  target: "node", // 关键:指定打包目标为Node.js环境
  resolve: {
    fallback: {
      "util": require.resolve("util/"),
      "crypto": require.resolve("crypto-browserify"),
      "http": require.resolve("stream-http")
    }
  }
};

同时安装对应的依赖包:

npm install util crypto-browserify stream-http --save-dev

4. 梳理项目结构

如果是全栈项目,建议将后端代码单独放在api或backend目录下,避免和前端代码混淆,防止Vercel误触发前端构建流程。

内容的提问来源于stack exchange,提问作者Jeisa Raja Tarigan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:40:27