Express 使用graphql使用Next.js清理URL
我非常感谢能为next.js实现服务器端对干净URL的支持 我在后端使用graphql瑜伽(和prisma),在前端使用apollo客户端的next.js 我的graphql瑜伽服务器正在端口4444上运行 不知道如何让它工作,最好的方法是什么 我试着用它 它使用server.get,这似乎不适用于yoga graphql 我还尝试将其实现为一个中间件,但也未能使其正常工作(似乎从未触发server.get) 我发现的一些答案建议使用自定义express服务器为next.js路由创建一个单独的文件,并为graphql路由创建一个单独的文件 我不知道如何同时运行server.js和index.js,也不知道是否建议这样做 在我的后端/src/index.js中:Express 使用graphql使用Next.js清理URL,express,graphql,next.js,clean-urls,Express,Graphql,Next.js,Clean Urls,我非常感谢能为next.js实现服务器端对干净URL的支持 我在后端使用graphql瑜伽(和prisma),在前端使用apollo客户端的next.js 我的graphql瑜伽服务器正在端口4444上运行 不知道如何让它工作,最好的方法是什么 我试着用它 它使用server.get,这似乎不适用于yoga graphql 我还尝试将其实现为一个中间件,但也未能使其正常工作(似乎从未触发server.get) 我发现的一些答案建议使用自定义express服务器为next.js路由创建一个单独的文
require("dotenv").config({ path: ".env" });
const next = require('next');
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();
const createServer = require("./createServer");
const server = createServer();
app
.prepare()
.then(() => {
server.express.get('/item/:id', (req, res) => {
const actualPage = '/item'
const queryParams = { id: req.params.id }
app.render(req, res, actualPage, queryParams)
})
server.express.get('*', (req, res) => {
return handle(req, res)
})
server.start(
{
cors: {
credentials: true,
origin: [process.env.FRONTEND_URL, process.env.BACKEND_URL, process.env.PLAYGROUND_URL]
}
},
deets => {
console.log(`Server is now running on port http://localhost:${deets.port}`);
}
);
})
.catch(ex => {
console.error(ex.stack)
process.exit(1)
})
我希望这段代码为以下路径提供干净的URL:
localhost/item?id=1(初始路径)
localhost/item/1(干净的url)
然而,当我从前端导航到localhost/item/1时,我得到一个404错误(应用程序的其余部分按预期工作),当我启动graphql服务器时,它会继续登录控制台:“客户端pings,但没有页面:/\u error”的条目
localhost/4444也给出了404错误,而不是显示graphql