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

Docker环境下Next.js+Express项目POST请求异常求助

问题排查:Next.js + Express Docker环境下POST请求异常

我正在开发一个前端基于Next.js、后端基于Express的项目,联调时遇到异常:使用axios向后端发送POST请求时出错(错误截图: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:10:14