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

Nuxt Bridge出现external_defu_default(...) is not a function报错

报错信息

nuxt - external_defu_default(...) is not a function

问题背景

执行Nuxt应用生成操作时触发该报错,当前技术栈为Nuxt Bridge + Tailwind,已尝试卸载未使用依赖,问题未解决。
环境版本信息:

  • Node:v16.14.0
  • Nuxt:nuxt bridge-edge

完整错误日志

at Array.reduce (<anonymous>)  
  at new runtime_BaseScheme (./node_modules/.cache/nuxt/prerender/chunks/app/server.mjs:14075:28)  
  at new LocalScheme (./node_modules/.cache/nuxt/prerender/chunks/app/server.mjs:14121:5)  
  at auth (./node_modules/.cache/nuxt/prerender/chunks/app/server.mjs:14314:35)  
  at createApp (./node_modules/.cache/nuxt/prerender/chunks/app/server.mjs:14632:11)  
  at async module.exports.__webpack_exports__.default (./node_modules/.cache/nuxt/prerender/chunks/app/server.mjs:14781:7)  
  at async renderToString (./node_modules/.cache/nuxt/prerender/chunks/renderer.mjs:278:19)  
  at async ./node_modules/.cache/nuxt/prerender/chunks/renderer.mjs:611:20  
  at async ./node_modules/h3/dist/index.mjs:420:19  
  at async nodeHandler (./node_modules/h3/dist/index.mjs:370:7)  
  at async ufetch (./node_modules/unenv/runtime/fetch/index.mjs:9:17)  
  at async generateRoute (./node_modules/nitropack/dist/chunks/prerender.mjs:2172:17)  
  at async Task.task (./node_modules/nitropack/dist/chunks/prerender.mjs:2194:29)
根因定位

从错误调用栈的BaseScheme、LocalScheme、auth字段可以判断,问题和@nuxtjs/auth-next模块有关:Nuxt Bridge依赖的defu包v6+版本为ESM规范导出,旧版auth模块采用CommonJS规则导入defu时,无法正确拿到默认导出的函数,最终触发is not a function报错,和Tailwind、未使用的冗余依赖无关。

修复步骤

按顺序操作即可解决问题:

  • 第一步:清理本地冗余文件
    删除项目根目录下的node_modules文件夹、.nuxt缓存文件夹,以及对应包管理器的锁文件(npm对应package-lock.json、yarn对应yarn.lock、pnpm对应pnpm-lock.yaml)。
  • 第二步:锁定defu兼容版本
    在package.json中添加版本强制覆盖配置,让全项目依赖统一使用兼容版本的defu:
    使用npm/pnpm的用户添加overrides字段:
    {
      "overrides": {
        "defu": "6.1.2"
      }
    }
    
    使用yarn的用户添加resolutions字段:
    {
      "resolutions": {
        "defu": "6.1.2"
      }
    }
    
  • 第三步:调整Nuxt构建配置
    在nuxt.config配置文件中,把defu加入构建转译列表,避免导入时的规范兼容问题:
    export default defineNuxtConfig({
      // 保留原有其他配置
      build: {
        transpile: [
          'defu',
          // 保留原有其他转译项
        ]
      }
    })
    
    注意如果项目中自定义了auth相关配置,不要从非官方路径导入defu做配置合并,统一使用import defu from 'defu'的导入方式。
  • 第四步:重新安装依赖构建
    执行包管理器的安装命令重装依赖,之后重新运行生成命令即可。
    补充:v16.14.0是Node 16的早期版本,存在部分ESM兼容bug,如果上述操作完成后仍有偶发报错,可以把Node升级到16.x的最终维护版本v16.20.2,稳定性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:48:17