提问者:小点点

如何像快车-群-路那样对快车路进行分组?


我尝试使用express-group-routes,并且在我的本地主机上工作得非常好,但是当在docker容器上启动时,没有检测到任何路由

我有返回JSON的简单代码,如下所示:

{
    "message": "Service Running"
}

和其他路由。

小型Expressjs服务与Ubuntu上的节点src/server.js协同工作,并且找到了所有路由。

当我将代码容器化时,问题就来了。

DockerFile如下所示

FROM node:12.18.2-alpine3.12

ENV PORT=3000

EXPOSE ${PORT}

COPY . /app

WORKDIR /app

RUN npm install

CMD ["node", "src/server.js"]

server.js如下所示

const express = require("express");
const bodyParser = require("body-parser");
const app = express();

// parse requests of content-type: application/json
app.use(bodyParser.json());

// parse requests of content-type: application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));

var { router } = require('./routes/index');

const port = process.env.PORT || 3000;
app.use(router);

app.listen(port,() => console.log("Server started :::", new Date().getTime()));

路由文件如下所示

const util = require('../util/util');
const auth = require("../controllers/authController.js");
const app = require('express');
const { check, validationResult, query } = require("express-validator");
const router = app.Router();
require('express-group-routes');
module.exports = (router) => {
    router.group('/api', (router) => {

        router.get("/", (req,res) => {
            return res.status(200).send({ message: "Service Running" });
        });


        router.get("/users", (req, res) => {
            const errors = validationResult(req);
            if (!errors.isEmpty()) {
                return util.ResponseUtil.generateResponseJSON(res, 503, 'Error in validation', { errors: errors.mapped() });
            } else {
                auth.userInfo(req, res);
            }
        });

    });
}
    

>

  • 运行docker容器时docker run-it-p 3000:3000服务:最新

    应用程序正在运行,我启动了服务器:::1594299481981

    我正在尝试获取http://localhost:3000/api/

    它回报了我

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="utf-8">
        <title>Error</title>
    </head>
    
    <body>
        <pre>Cannot GET /api/</pre>
    </body>
    
    </html>
    

    我所尝试的

    • 使用节点10
    • 使用节点12

  • 共1个答案

    匿名用户

    express-group-routes未积极维护(4年前)

    而且它的npm站点https://www.npmjs.com/package/express-group-routes没有github存储库!

    尝试使用此代码段:

    https://github.com/jrichardsz/nodejs-express-snippets/blob/master/01-hello-world.js

    其中我向您展示了一个基本的路由示例。

    如果要对路由进行分组,可以使用如下所示:

    server.js

    const app = require('express');
    const AdminRoute = require ...
    const UserRoute = require ...
    ....
    AdminRoute.configure(app)
    UserRoute.configure(app)
    

    或者这个

      fs.readdirSync(`/some/folder/routes/`).forEach(function(file){
        var commandRequire = require(`/some/folder/routes/`+file);
        var command = new commandRequire();
      });
    

    其中我从一个文件夹中读取js文件并动态地实例化它们,因此您的server.js将会更精简:

    const app = require('express');
    const ScanRoutes = require ...
    ...
    ScanRoutes.scan("routes/folder", app)