Node.js 如何正确地将Next.js配置为前端,将Express app配置为后端?

Node.js 如何正确地将Next.js配置为前端,将Express app配置为后端?,node.js,reactjs,express,next.js,Node.js,Reactjs,Express,Next.js,目前我已经为前端创建了react应用程序,为后端创建了express server。在create react应用程序的package.json中,我使用的代理如下“proxy”:http://localhost:5000“。 我需要用相同的express服务器为Next.js应用程序实现相同的功能 我只是希望能够使用我的express服务器,而不是Next.js中构建的API路由,并像在create react应用程序中那样代理它 我是否需要创建自定义的Next.js服务器,即使我没有更改它的

目前我已经为前端创建了react应用程序,为后端创建了express server。在create react应用程序的package.json中,我使用的代理如下
“proxy”:http://localhost:5000“
。 我需要用相同的express服务器为Next.js应用程序实现相同的功能

我只是希望能够使用我的express服务器,而不是Next.js中构建的API路由,并像在create react应用程序中那样代理它


我是否需要创建自定义的Next.js服务器,即使我没有更改它的任何功能?如何正确执行此操作?

是的,您必须在下一个js中添加自定义服务器

安装express js,然后在下一个js项目的根目录中添加文件server.js

const express = require('express')
const next = require('next')
const bodyParser = require('body-parser')

const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()

app.prepare().then(() => {
  const server = express()

  server.use(bodyParser.json())
// add custom path here
// server.post('/request/custom', custom);

  
  server.get('*', (req, res) => {
    return handle(req, res)
  })

  server.listen(3000, (err) => {
    if (err) throw err
    console.log('Ready on http://localhost:5000')
  })
})
在更改package.json文件脚本部分之后

"scripts": {
    "dev": "node server.js",
    "build": "next build",
    "start": "NODE_ENV=production node server.js",
} 

谢谢,它起作用了。但是Next.js的功能,比如快速刷新,又如何呢?我失去了所有的一切,只是因为我有我的自定义express服务器?你试过了吗?快速刷新和所有其他功能都正常工作。app=next({dev})const handle=app.getRequestHandler();这些行将在express Server中添加下一个设置。这是我的错误,我使用了nodemon而不是node。非常感谢。如果你还在这里,我还有一个问题。您认为将我的API和Next.js应用程序作为一个服务器(一个文件)好吗?我的意思是有一个问题,例如,我不能在getStaticProps()中调用我的内部API(构建中断)。但是,如果我的expressapi在不同的端口上运行不同的服务器,那就没有问题了。你觉得这个怎么样?