ReactJS/Next.js:CRA代理无法与Next.js一起使用(尝试将API请求路由到Express server)
我目前正在升级一个vanilla React应用程序以使用Next.js(7.0.0版)。该应用程序最初使用Create React应用程序构建,并利用CRA服务器内置的代理 在开发过程中,我的React应用程序在端口3000上运行,我有一台Express服务器在端口5000上运行。在添加Next.js之前,我一直在使用package.json文件中的代理对象将API请求路由到服务器 API请求:ReactJS/Next.js:CRA代理无法与Next.js一起使用(尝试将API请求路由到Express server),reactjs,express,create-react-app,next.js,Reactjs,Express,Create React App,Next.js,我目前正在升级一个vanilla React应用程序以使用Next.js(7.0.0版)。该应用程序最初使用Create React应用程序构建,并利用CRA服务器内置的代理 在开发过程中,我的React应用程序在端口3000上运行,我有一台Express服务器在端口5000上运行。在添加Next.js之前,我一直在使用package.json文件中的代理对象将API请求路由到服务器 API请求: const res = await axios.get('/api/request') "pro
const res = await axios.get('/api/request')
"proxy": {
"/api/*": {
"target": "http://localhost:5000"
}
}
package.json中的代理对象:
const res = await axios.get('/api/request')
"proxy": {
"/api/*": {
"target": "http://localhost:5000"
}
}
这一直工作得很好,但对于Next.js,我现在遇到了一个错误:
GET http://localhost:3000/api/request 404 (Not Found)
^这应该指向locahost:5000(我的服务器)
有人知道我如何将API请求从React/Next.js客户端路由到运行在不同端口上的Express服务器吗?好的,我已经解决了这个问题。您可以使用以下命令为Express创建Node.js代理 然后,您可以将目标选项配置为将请求代理到正确的域:
const proxy = require('http-proxy-middleware')
app.use('/api', proxy({ target: 'http://localhost:5000', changeOrigin: true }));
请你进一步澄清你的答案好吗?您是否将中间件添加到后端?或者到nextjs?到自定义的nextjs server.js文件任何人都可以在这方面寻找更多资源:在Next.js repo上有一个上下文,以及一个官方实现此解决方案。如果我有一个完全独立的后端文件夹,在port=8080上运行API会怎么样。我应该如何使用path/api从我的nextjs前端向其发出api请求?