首页 > 解决方案 > 实施快速路由器

问题描述

例如,我有一个带有路由器文件的NodejsHTTP 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
  );
}

我在路由文件夹中创建了一个index.js文件,该文件使用路由和.exportsrouter

// /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 不是 module.exports 的函数

我应该怎么做才能express.Router()正确实施?

标签: javascriptnode.jsexpressroutes

解决方案


您只是忘记将 传递给app您的router.use("/users", userRoutes);电话吗?

目前user.routes不知道是什么app,因为您还没有实现类似的东西const app = express();,需要将其传入。


推荐阅读