Docker环境下Next.js+Express项目POST请求异常求助
问题排查:Next.js + Express Docker环境下POST请求异常
我正在开发一个前端基于Next.js、后端基于Express的项目,联调时遇到异常:使用axios向后端发送POST请求时出错(错误截图:
)。
问题特殊性:GET请求可正常工作,后端已配置CORS,所有服务部署在Docker环境中。
测试结果
使用容器别名api时:
- 前端GET请求:正常
- 前端POST请求:异常
- 容器内curl发送POST请求:正常
使用http://localhost时:
- 前端GET请求:异常
- 前端POST请求:正常
- 容器内curl发送POST请求:正常
- Postman发送POST请求:正常
相关代码配置
后端server.ts
import express from 'express' import { adminJs, adminJsRouter } from './adminjs' import { sequelize } from './database' import dotenv from 'dotenv' import { router } from './routes' import cors from 'cors' dotenv.config() const app = express() app.use(cors()) app.use(express.static('public')) app.use(express.json()) app.use(adminJs.options.rootPath, adminJsRouter) app.use(router) const PORT = process.env.SERVER_PORT || 3000 app.listen(PORT, () => { sequelize.authenticate().then(() => console.log('DB connection sucessfull.')) console.log(`Server started successfuly at port ${PORT}`) })
前端api.ts
import axios from "axios"; const baseURL = process.env.NEXT_PUBLIC_BASEURL! const api = axios.create({baseURL}) export type ErrorType ={ message: string } export default api;
前端authService.ts(问题出现位置)
const authService = { register: async (params: Register) => { try { const res = await api.post<AxiosResponse<Register>>('/auth/register', params) console.log(res) return res } catch (err) { if (!axios.isAxiosError<AxiosError<ErrorType>>(err)) throw err console.error(JSON.stringify(err)) return err } } } export default authService
前端docker-compose.yml
version: '3.9' services: front: build: context: . ports: - '3001:3001' volumes: - .:/onebitflix-front command: bash start.sh stdin_open: true environment: - NEXT_PUBLIC_BASEURL=http://api:3000 - STATIC_FILES_BASEURL=http://localhost:3000 networks: - onebitflix-net networks: onebitflix-net: name: onebitflix-net external: true
后端docker-compose.yml
version: '3.8' services: api: #I use this alias in frontend build: . command: bash start.sh ports: - "3000:3000" volumes: - .:/onebitflix environment: NODE_ENV: development SERVER_PORT: 3000 HOST: db PORT: 5432 DATABASE: onebitflix_development USERNAME: onebitflix PASSWORD: onebitflix JWT_SECRET: chave-do-jwt depends_on: - db networks: - onebitflix-net db: image: postgres:15.1 environment: POSTGRES_DB: onebitflix_development POSTGRES_USER: onebitflix POSTGRES_PASSWORD: onebitflix ports: - "5432:5432" networks: - onebitflix-net networks: onebitflix-net: name: onebitflix-net external: true volumes: db:
恳请协助排查并解决该POST请求异常问题。
内容的提问来源于stack exchange,提问作者Jose Luiz Junior
相关产品推荐
相关产品推荐

