【发布时间】:2021-04-27 21:16:20
【问题描述】:
所以我正在使用 next.js 和自定义服务器 (express.js)。我有一些中间件(f.ex. const attachUser),我想在我的 API 端点中使用它们。但由于某种原因,我无法使用 app.use。
以下代码仅在我不使用 app.use(attachUser) 并手动将 attachUser 添加到每个端点时才有效。
require("dotenv").config();
const express = require("express");
const next = require("next");
const bodyParser = require("body-parser");
const cors = require("cors");
//next.js configuration
const dev = process.env.NODE_DEV !== "production";
const nextApp = next({
dev
});
const port = 3000;
const handle = nextApp.getRequestHandler();
nextApp.prepare().then(() => {
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(cors());
const attachUser = (req, res, next) => {
const token = req.cookies["token"];
if (!token) {
return res.status(401).json({
message: "Authentication invalid"
});
}
const decodedToken = jwtDecode(token);
if (!decodedToken) {
return res.status(401).json({
message: "There was a problem authorizing the request",
});
} else {
req.user = decodedToken;
next();
}
};
//app.use(attachUser)
app.get(
"/api/savedItems",
attachUser, //delete when app.use(attachUser) is used
async(req, res) => {
try {
//logic
return res.json(itemData);
} catch (err) {
return res.status(400).json({
error: err
});
}
});
谁能告诉我我做错了什么?
顺便说一句,这是我的第一个项目。感谢任何改进代码的建议!非常感谢!
【问题讨论】:
标签: javascript express next.js