Vercel部署Express后端时uglify-js的exports.js文件不存在如何解决
问题成因
- 核心是你使用的
jade@1.11.0模板引擎早已废弃,其依赖的transformers包已经停止维护,嵌套依赖的远古版本uglify-js目录结构与现有版本不匹配,单独安装新版uglify-js无法覆盖嵌套依赖,因此之前的修复操作无效。 - 第二点是
vercel.json配置错误:Express生成器的项目默认启动入口为./bin/www,你配置的构建入口仅指向无监听逻辑的app.js,且路由目标路径配置错误,导致Vercel构建阶段异常编译依赖链,触发文件找不到的报错。 - 你提供的测试文件可以正常运行,是因为测试代码自带端口监听逻辑,不需要依赖额外启动文件,同时没有引入废弃的jade依赖,不会触发旧包的兼容性问题。
修复步骤
- 替换废弃的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后缀,二者语法完全兼容不需要调整模板内容。
- 修正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即可。
- 清理缓存重新部署
删除本地的node_modules文件夹、package-lock.json文件,重新执行npm install生成新的依赖锁文件,推送代码到Vercel时,先在项目部署设置中选择Clear build cache清除构建缓存后再执行部署,避免旧缓存的依赖影响构建结果。
内容的提问来源于stack exchange,提问作者KuroKei
相关产品推荐
相关产品推荐

