Не работают запросы к API после сборки проекта
При тестировании в режиме разработки все ок, все axios запросы работают. После сборки (npm run build && npm run start), приложение запускается и работает, но запросы к API нет. В консоле ловлю _//localhost:3000/api/auth/generateKey пишет NOT FOUND 404
Client:
import axios from 'axios'
axios.get('api/auth/generateKey')
Backend - app.js
const express = require('express')
const app = express()
const info = require('./routes/auth')
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
extended: true
})
)
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*')
res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE,
OPTIONS')
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With,
Content-Type, Content-Length, x-access-token')
if (req.method === 'OPTIONS') {
res.sendStatus(200)
} else {
next()
}
})
app.use('/api/auth', auth({ express }))
module.exports = app
Backend - index.js
const { loadNuxt, build } = require('nuxt')
const app = require('./app')
const port = process.env.PORT || 3000
const host = process.env.HOST || 'localhost'
const dev = process.env.NODE_ENV !== 'production'
async function start() {
const nuxt = await loadNuxt(dev ? 'dev' : 'start')
app.use(nuxt.render)
if (dev) {
build(nuxt)
}
app.listen(port, host, function() {
console.log(`Server listening on http://${host}:${port}`)
})
}
start()
nuxt.config.js
...
axios: {
baseURL: '/'
},
...
Update:
Даже если добавить обычный маршрут с выводом hello world, он также не отрабатывает, в режиме же разработки все ок.
app.get('/test', (req, res) => {
res.status(200).send('Hello world!')
})
Ответы (1 шт):
Автор решения: haswell
→ Ссылка
Ваш app.js:
const express = require('express')
const app = express()
...
app.get('/test', (req, res) => {
res.status(200).send('Hello world!')
})
module.exports = { path: '/api', handler: app }
Ваш nuxt.config.js, добавим промежуточное серверное по:
serverMiddleware: ['~/path/to/app.js']
Соответственно из index.js убираем const app = require('./app'). Теперь маршрут до api должен работать, localhost:3000/api/test ---> Hello world!
