Express 使用API在Vercel上部署Nuxt JS
我正在尝试将我的nuxt应用程序部署到Vercel上,但每当我尝试发出api请求时,都会不断获取“Cannot GET/api/hello”或任何其他端点。我在日志中没有看到任何错误,它返回404状态。在我当地的环境中,一切都很完美 vercel.json:Express 使用API在Vercel上部署Nuxt JS,express,nuxt.js,vercel,Express,Nuxt.js,Vercel,我正在尝试将我的nuxt应用程序部署到Vercel上,但每当我尝试发出api请求时,都会不断获取“Cannot GET/api/hello”或任何其他端点。我在日志中没有看到任何错误,它返回404状态。在我当地的环境中,一切都很完美 vercel.json: { "version": 2, "rewrites": [ { "source": "/api/(.*)", "destination
{
"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/**"]
}
}
]
}
numxt.config.js
// Server Middleware API
serverMiddleware:
process.env.NODE_ENV === 'production'
? []
: [
{ path: '/api', handler: '~/api/index' },
{ path: '/api/hello', handler: '~api/hello' }
],
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
serverMiddleware: ['~/api', '~/api/hello']
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 }
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 }
/api/hello.js
// Server Middleware API
serverMiddleware:
process.env.NODE_ENV === 'production'
? []
: [
{ path: '/api', handler: '~/api/index' },
{ path: '/api/hello', handler: '~api/hello' }
],
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
serverMiddleware: ['~/api', '~/api/hello']
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 }
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 }
更新
numxt.config.js
// Server Middleware API
serverMiddleware:
process.env.NODE_ENV === 'production'
? []
: [
{ path: '/api', handler: '~/api/index' },
{ path: '/api/hello', handler: '~api/hello' }
],
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
serverMiddleware: ['~/api', '~/api/hello']
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 }
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 }
/api/hello.js
// Server Middleware API
serverMiddleware:
process.env.NODE_ENV === 'production'
? []
: [
{ path: '/api', handler: '~/api/index' },
{ path: '/api/hello', handler: '~api/hello' }
],
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
serverMiddleware: ['~/api', '~/api/hello']
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 }
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 }
/api/index.js
// Server Middleware API
serverMiddleware:
process.env.NODE_ENV === 'production'
? []
: [
{ path: '/api', handler: '~/api/index' },
{ path: '/api/hello', handler: '~api/hello' }
],
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
serverMiddleware: ['~/api', '~/api/hello']
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 }
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 }
构建在本地工作吗?是的,一切正常本地LyServerMiddleWare:[{path:'/api',handler:'~/api/'}],再次感谢Shimon。您是否对任何Vercel设置进行了任何调整?我仍然收到错误“Cannot GET/api/hello”不,我没有在Vercel上更改任何内容。可能是您的/api/index.js捕获了所有路由,而您没有侦听/hello?可能是这样。它适用于index.js路由,但不适用于任何其他路由。如何更改vercel.json文件以允许api/index和api/hello或任何其他子目录?我一直在测试重写配置,但仍然有问题:{“source”:/api/(.*),“destination”:/api},