我的服務器檔案開始變得有點太長,所以我決定使用快速路由并將每個路由拆分到單獨的腳本上。我照常做所有事情,但問題是:應用程式渲染方法不起作用,頁面只是不斷滾動。這是索引檔案的樣子:
const express = require('express');
const router = express.Router();
const Declaration = require("../models/declaration")
const next = require('next')
const app = next({ true })
router.get('/', async (req, res) =>
{
const declarations = await Declaration.find({})
app.render(req, res, "/", { declarations })
})
router.post('/', async (req, res) =>
{
const declaration = new Declaration({ ...req.body })
await declaration.save();
res.redirect("/")
})
module.exports = router;
服務器檔案:
...
const index = require("./routes/index")
app.prepare().then(() =>
{
const server = express();
server.use(express.urlencoded({ extended: true }));
server.use(methodOverride('_method'));
server.use(express.static(path.join(__dirname, 'public')));
server.use('/', index)
...
這是更新前路線的樣子:
...
app.prepare().then(() =>
{
const server = express();
server.use(express.urlencoded({ extended: true }));
server.use(methodOverride('_method'));
server.use(express.static(path.join(__dirname, 'public')));
server.get("/", async (req, res) =>
{
const declarations = await Declaration.find({})
app.render(req, res, "/", { declarations })
})
server.post("/", async (req, res) =>
{
const declaration = new Declaration({ ...req.body })
await declaration.save();
res.redirect("/")
})
...
我真的不知道如何解決這個問題。
uj5u.com熱心網友回復:
使用res.render()代替app.render()
uj5u.com熱心網友回復:
我在另一篇文章( Using Express Router with Next.js)中找到了解決方案。基本上我要做的就是從服務器檔案中匯出應用程式并在路由器檔案上使用它,而不是匯入另一個。
這就是它最終的樣子:
服務器
module.exports = app;
//make sure that app is exported before importing the router files
const index = require("./routes/index")
const view = require("./routes/view")
const edit = require("./routes/edit")
app.prepare().then(() =>
{
const server = express();
server.use(express.urlencoded({ extended: true }));
server.use(methodOverride('_method'));
server.use(express.static(path.join(__dirname, 'public')));
server.use('/', index)
server.use('/view', view)
server.use('/view', edit)
路由器檔案
const express = require('express');
const router = express.Router();
const Declaration = require("../models/declaration")
const app = require("../main")
//import app from the server file
router.get('/', async (req, res) =>
{
const declarations = await Declaration.find({})
app.render(req, res, "/", { declarations })
})
所以現在它應該按預期作業
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/422739.html
標籤:
上一篇:對兩個端點使用相同的模塊
下一篇:GEThttp://localhost:4200/tour-xb-cover.jpeg404(未找到)-損壞的影像路徑(未顯示)
