【发布时间】:2021-03-24 02:39:42
【问题描述】:
我有两个服务,一个客户端和一个服务器。我在客户端上使用Next.js 和React,在我的服务器上使用express。我有一个 docker-compose 文件。我需要在后端实现一些端点,并使用axios 从客户端向后端发出请求。
在开发过程中,我正在运行docker-compose up。在开发应用程序时,我在客户端创建了一个地址表单,并希望在浏览器中查看结果。当我尝试提交表单并将请求发送到服务器时,我收到了404。这是客户端向后端发出请求的代码:
import axios from 'axios'
const postNewAddress = async (address) => {
axios.post('/address', address)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
}
module.exports = {
postNewAddress
}
这是我目前在后端拥有的:
const express = require( 'express' );
const app = express();
const port = process.env.PORT || 3001
app.use(express.json())
app.get( '/', ( req, res ) => {
res.send({ greeting: 'Hello world!' });
});
app.post('/address', ( req, res ) => {
const address = req.body
console.log(address)
res.json(address)
})
app.listen(port, err => {
if (err) throw err;
console.log(`Listening on PORT ${port}!`)
})
当我在 axios 请求中将 URL 更改为 http://server:3001/address 时,我收到 net::ERR_NAME_NOT_RESOLVED 错误。我做了一些研究,这可能是因为浏览器和 docker 容器在不同的网络中运行。但我找不到任何可以让我从浏览器向容器发出请求的解决方案。
这是docker-compose.yml的要点
【问题讨论】:
标签: docker express docker-compose axios next.js