实施 Express 路由器
Implement Express Router
我有一个 Nodejs 服务器,其中包含为 HTTP methods
采用绝对路由的路由器文件,例如 /api/users/all
.
// /routes/user.routes.js
module.exports = (app) => {
app.use((req, res, next) => {
res.header(
"Access-Control-Allow-Headers",
"x-access-token, Origin, Content-Type, Accept"
);
next();
});
app.get(
"/api/users/all",
controller.allAccess
);
}
我 require()
在我的 server.js 文件中是这样的。
// server.js
require("./routes/user.routes")(app);
现在,我不想使用绝对路由,而是想实现 express.Router()
。
我在 user.routes.js 文件中进行了以下更改。
// /routes/user.routes.js
const express = require("express");
const router = express.Router();
module.exports = (app) => {
app.use((req, res, next) => {
res.header(
"Access-Control-Allow-Headers",
"x-access-token, Origin, Content-Type, Accept"
);
next();
});
router.get(
"/all",
controller.allAccess
);
}
我在我的 routes 文件夹中创建了一个 index.js 文件,该文件使用路线和 exports
router
.
// /routes/index.js
const express = require("express");
const userRoutes = require("./user.routes");
const router = express.Router();
router.use("/users", userRoutes);
module.exports = router;
并在我的 server.js 文件中进行了以下更改。
// server.js
const routes = require("./routes");
app.use("/api/v1", routes);
但是我在到达路线时收到错误消息。
TypeError: app.use is not a function at module.exports
我应该怎么做才能正确实施 express.Router()
?
您是否忘记将 app
传递到您的 router.use("/users", userRoutes);
调用中?
目前 user.routes
不知道 app
是什么,因为您还没有实现 const app = express();
之类的东西,需要传入它。
问题出在您的 /routes/user.routes.js
中,因为其中的应用程序变量未定义。要解决此问题,您需要将 app
替换为 router
变量,如下所示:
const express = require("express");
const router = express.Router();
router.use((req, res, next) => {
res.header(
"Access-Control-Allow-Headers",
"x-access-token, Origin, Content-Type, Accept"
);
next();
});
router.get("/all", controller.allAccess);
module.exports = router;
我有一个 Nodejs 服务器,其中包含为 HTTP methods
采用绝对路由的路由器文件,例如 /api/users/all
.
// /routes/user.routes.js
module.exports = (app) => {
app.use((req, res, next) => {
res.header(
"Access-Control-Allow-Headers",
"x-access-token, Origin, Content-Type, Accept"
);
next();
});
app.get(
"/api/users/all",
controller.allAccess
);
}
我 require()
在我的 server.js 文件中是这样的。
// server.js
require("./routes/user.routes")(app);
现在,我不想使用绝对路由,而是想实现 express.Router()
。
我在 user.routes.js 文件中进行了以下更改。
// /routes/user.routes.js
const express = require("express");
const router = express.Router();
module.exports = (app) => {
app.use((req, res, next) => {
res.header(
"Access-Control-Allow-Headers",
"x-access-token, Origin, Content-Type, Accept"
);
next();
});
router.get(
"/all",
controller.allAccess
);
}
我在我的 routes 文件夹中创建了一个 index.js 文件,该文件使用路线和 exports
router
.
// /routes/index.js
const express = require("express");
const userRoutes = require("./user.routes");
const router = express.Router();
router.use("/users", userRoutes);
module.exports = router;
并在我的 server.js 文件中进行了以下更改。
// server.js
const routes = require("./routes");
app.use("/api/v1", routes);
但是我在到达路线时收到错误消息。
TypeError: app.use is not a function at module.exports
我应该怎么做才能正确实施 express.Router()
?
您是否忘记将 app
传递到您的 router.use("/users", userRoutes);
调用中?
目前 user.routes
不知道 app
是什么,因为您还没有实现 const app = express();
之类的东西,需要传入它。
问题出在您的 /routes/user.routes.js
中,因为其中的应用程序变量未定义。要解决此问题,您需要将 app
替换为 router
变量,如下所示:
const express = require("express");
const router = express.Router();
router.use((req, res, next) => {
res.header(
"Access-Control-Allow-Headers",
"x-access-token, Origin, Content-Type, Accept"
);
next();
});
router.get("/all", controller.allAccess);
module.exports = router;