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

Nuxt部署Heroku报错Cannot find module 'defu'问题求助

问题根因

报错Cannot find module 'defu' from '/app'是生产环境依赖缺失导致的。
本地运行正常是因为本地开发环境安装了全量依赖与嵌套包,而Heroku部署时默认执行生产模式依赖安装,仅安装dependencies下声明的包及其合法嵌套依赖,defu作为Nuxt生态核心工具包(Nuxt本体、@nuxtjs/auth-next都依赖该包)未被正确安装,通常由两个问题触发:

  • 项目锁文件(package-lock.json/yarn.lock)损坏、或被.gitignore规则忽略未提交到仓库,导致Heroku端依赖版本解析出错,漏装该包
  • 本地依赖安装时存在异常,node_modules有残留缓存但依赖树未被正确记录到package.json与锁文件中
修复步骤
  1. 显式声明缺失的生产依赖
    本地项目根目录执行以下命令,直接将defu加入生产依赖,从根源避免嵌套依赖解析导致的漏装问题:
npm install defu

执行完成后确认package.json的dependencies字段中已新增defu的版本声明即可。

  1. 校验锁文件提交状态
    打开根目录.gitignore文件,确认不存在忽略package-lock.json的规则。如果之前该文件被忽略,删除对应忽略规则后执行:
git add package-lock.json

注意:node_modules目录必须保留在.gitignore中,不要将本地依赖目录提交到Git,否则会因Heroku运行环境与本地环境的架构、系统差异触发额外运行错误,Heroku部署时会自动执行依赖安装。

  1. 清理Heroku构建缓存后重新部署
    Heroku会缓存历史构建的依赖文件,旧缓存可能导致依赖更新不生效,先执行命令清理缓存:
heroku plugins:install heroku-builds
heroku builds:cache:purge -a 替换为你的Heroku应用名称

之后提交所有变更,重新推送代码部署:

git add .
git commit -m "fix: resolve missing defu dependency in production"
git push heroku development:master
额外配置提醒

你贴出的nuxt.config.js里有两个后续可能触发问题的配置,建议提前调整:

  • axios的baseURL当前写为http://localhost:8080,Heroku容器内的localhost指向容器自身,无法访问你本地运行的后端服务,依赖问题修复后需要将该值替换为后端服务的公网可访问地址,否则所有接口请求都会失败
  • plugins配置中{ src: '~plugins//vue-burger-menu', mode: 'client' }路径多写了一个斜杠,虽然Nuxt大多时候能兼容路径解析,但建议修正为~plugins/vue-burger-menu,避免极端场景下的路径解析错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 00:27:24