【问题标题】:Nuxt JS Deploy on Vercel with API使用 API 在 Vercel 上部署 Nuxt JS
【发布时间】:2021-05-21 22:27:10
【问题描述】:

我正在尝试将我的 nuxt 应用程序部署到 Vercel 上,但每当我尝试发出 api 请求时,都会不断收到“Cannot GET /api/hello”或任何其他端点。我在日志中看不到任何错误,它返回 404 状态。一切都在我的本地环境中完美运行。

vercel.json:

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

nuxt.config.js

// Server Middleware API
  serverMiddleware:
    process.env.NODE_ENV === 'production'
      ? []
      : [
          { path: '/api', handler: '~/api/index' },
          { path: '/api/hello', handler: '~api/hello' }
        ],

/api/hello.js

import express from 'express'
import bodyParser from 'body-parser'

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

app.get('/', (req, res) => {
  res.status(200).json('test - get').end()
})

app.post('/', (req, res) => {
  res.status(200).json('test - post').end()
})

export default app

【问题讨论】:

  • 构建是否在本地工作?
  • 是的,本地一切正常

标签: express nuxt.js vercel


【解决方案1】:

更新;

nuxt.config.js

serverMiddleware: ['~/api', '~/api/hello']

/api/hello.js

import express from 'express'

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

app.get('/', (req, res) => res.send('test-get'))
app.post('/', (req, res) => res.send('test-post'))

export default { path: '/api/hello', handler: app }

/api/index.js

import express from 'express'
import users from './users'

const app = express()

app.use(express.json())
app.use('/users', users)

app.get('/', (req, res) => res.send('Hi from /api'))

export default { path: '/api', handler: app }

【讨论】:

  • serverMiddlewere: [{ path: '/api', handler: '~/api/' }],
  • 再次感谢西蒙。您是否对任何 Vercel 设置进行了任何调整?我仍然收到错误“无法获取 /api/hello”
  • 不,我没有对 Vercel 进行任何更改。
  • 可能是你的 /api/index.js 捕获了所有的溃败,而你没有在听 /hello?
  • 可能。它适用于 index.js 路由,但不适用于其他路由。如何更改我的 vercel.json 文件以允许 api/index 和 api/hello 或任何其他子目录?我一直在测试重写配置,但仍然遇到问题:{ "source": "/api/(.*)", "destination": "/api" },
猜你喜欢
  • 2021-08-16
  • 1970-01-01
  • 2020-10-23
  • 2022-08-12
  • 2021-08-18
  • 2022-10-24
  • 1970-01-01
  • 2022-01-20
  • 2021-01-04
相关资源
最近更新 更多