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

将基于ES6 Modules的Express.js应用部署到Vercel遇错求助

解决Express ES6模块部署Vercel时的require未定义错误

错误根源

Vercel默认的启动脚本___now_launcher.js采用CommonJS语法编写,但你的项目通过package.json里的"type": "module"声明为ES模块,导致脚本中的require调用在ES模块环境中失效。

解决方案

  • 指定自定义启动命令
    在项目的package.json中修改scripts字段,直接用Node.js启动你的Express入口文件,绕开Vercel的默认启动器:

    "scripts": {
      "start": "node server.js",
      "vercel-build": "echo 'Build completed'"
    }
    

    注意:把server.js替换成你实际的项目入口文件名。

  • 确认ES模块配置
    确保package.json中已正确声明:

    "type": "module"
    

    同时检查项目中所有.js文件的导入语法,统一使用ES模块的import替代CommonJS的require,比如:

    // 替换前
    const express = require('express')
    // 替换后
    import express from 'express'
    
  • 配置Vercel项目设置
    登录Vercel控制台,进入你的项目:

    1. 打开「Settings」→「Build & Development Settings」
    2. 将「Build Command」设置为npm run vercel-build(如果项目无需构建步骤,此命令仅作占位用)
    3. 「Output Directory」留空(Express项目通常无需指定输出目录)
    4. 「Install Command」保持默认的npm install即可
  • 修正本地文件导入路径
    ES模块要求导入本地文件时必须添加扩展名,比如:

    // 错误写法
    import router from './routes'
    // 正确写法
    import router from './routes.js'
    

内容的提问来源于stack exchange,提问作者Lakween Senathilake

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:18:10