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

Vercel部署Express后端时uglify-js的exports.js文件不存在如何解决

问题成因
  • 核心是你使用的jade@1.11.0模板引擎早已废弃,其依赖的transformers包已经停止维护,嵌套依赖的远古版本uglify-js目录结构与现有版本不匹配,单独安装新版uglify-js无法覆盖嵌套依赖,因此之前的修复操作无效。
  • 第二点是vercel.json配置错误:Express生成器的项目默认启动入口为./bin/www,你配置的构建入口仅指向无监听逻辑的app.js,且路由目标路径配置错误,导致Vercel构建阶段异常编译依赖链,触发文件找不到的报错。
  • 你提供的测试文件可以正常运行,是因为测试代码自带端口监听逻辑,不需要依赖额外启动文件,同时没有引入废弃的jade依赖,不会触发旧包的兼容性问题。
修复步骤
  1. 替换废弃的jade模板
    jade现已更名为pug,旧版jade的依赖链全为过期包,直接执行以下命令替换:
npm uninstall jade
npm install pug

然后修改app.js中的模板引擎配置:
将app.set('view engine', 'jade');修改为app.set('view engine', 'pug');,同时将views目录下所有.jade后缀的模板文件改为.pug后缀,二者语法完全兼容不需要调整模板内容。

  1. 修正vercel.json配置
    将原配置替换为以下内容,适配Express生成器的默认启动逻辑:
{
    "version": 2,
    "builds": [
        {
            "src": "./bin/www",
            "use": "@vercel/node"
        }
    ],
    "routes": [
        {
            "src": "/(.*)",
            "dest": "/bin/www"
        }
    ]
}

如果你不想使用默认的bin/www作为入口,也可以将bin/www中的端口监听逻辑复制到app.js的末尾,再将配置中的src和dest指向app.js即可。

  1. 清理缓存重新部署
    删除本地的node_modules文件夹、package-lock.json文件,重新执行npm install生成新的依赖锁文件,推送代码到Vercel时,先在项目部署设置中选择Clear build cache清除构建缓存后再执行部署,避免旧缓存的依赖影响构建结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:15:03