Node.js 如何正确地将Next.js配置为前端,将Express app配置为后端?
目前我已经为前端创建了react应用程序,为后端创建了express server。在create react应用程序的package.json中,我使用的代理如下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服务器,即使我没有更改它的
“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在不同的端口上运行不同的服务器,那就没有问题了。你觉得这个怎么样?