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

Nuxt serverMiddleware部署到Vercel无服务器函数时找不到Axios

解决Vercel部署Nuxt ServerMiddleware时找不到Axios模块的问题

问题核心:本地运行正常,但部署到Vercel后,serverless函数报错找不到axios.cjs模块,尽管Axios已声明在dependencies中。

问题根源

你的vercel.json同时配置了两种API处理方式:

  1. 用@vercel/node单独构建api/index.js
  2. 用@nuxtjs/vercel-builder的serverFiles包含api/**

这会导致两个独立的构建流程,@vercel/node构建时可能未正确处理Axios的模块依赖,或者和Nuxt的依赖打包逻辑冲突。

解决方案

1. 简化vercel.json配置

移除单独的@vercel/node构建块,完全交给@nuxtjs/vercel-builder处理ServerMiddleware,它会自动将你的ServerMiddleware转换为Vercel Serverless Functions:

{
  "version": 2,
  "builds": [
    {
       "src": "nuxt.config.js",
       "use": "@nuxtjs/vercel-builder",
       "config": {
          "serverFiles": ["api/**"]
       }
    }
  ]
}

2. 修正nuxt.config.js的ServerMiddleware配置

生产环境也需要启用ServerMiddleware(@nuxtjs/vercel-builder会自动适配Vercel环境),同时建议配置路径前缀避免路由冲突:

// nuxt.config.js
export default {
  // ...其他配置
  serverMiddleware: [
    { path: '/api', handler: '~/api/index.js' }
  ]
}

3. 调整API文件的路由路径

因为ServerMiddleware已经挂载到/api前缀,所以需要修改api/index.js中的路由,去掉重复的/api前缀:

// ~/api/index.js
import express from 'express'
import bodyParser from 'body-parser'
import axios from 'axios'

const app = express()
app.use(bodyParser.json())

// 路由改为/product,对应访问路径/api/product
app.get('/product', async function (_, res) {
    const url = 'https://connect.squareup.com/v2/catalog/list?types=ITEM'
    const headers = {
        Authorization: `Bearer abc`
    }
    const result = await axios.get(url, { headers })

    res.status(200).send(result.data)
})

export default app

4. (可选)解决Axios版本冲突

你同时安装了@nuxtjs/axios(依赖Axios 0.x)和axios@1.2.1,可能存在版本兼容问题。建议降级Axios到0.27.x:

npm uninstall axios
npm install axios@0.27.2

5. 清理缓存重新部署

在Vercel控制台的部署页面,点击"Redeploy"并勾选"Clear build cache",确保依赖被重新安装打包。

验证

部署完成后,访问https://your-vercel-domain/api/product,应该能正常返回数据,函数日志不再出现模块缺失错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:05:26