ReactJS/Next.js:CRA代理无法与Next.js一起使用(尝试将API请求路由到Express server)

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

我目前正在升级一个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')
"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请求?