最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Nodejs表示,路由器文件已加载,但路由器无法正常工作

IT培训 admin 5浏览 0评论

Nodejs表示,路由器文件已加载,但路由器无法正常工作

我正在使用Node.js作为移动应用程序的后端服务器,但是一些Express路由器无法正常工作。路由器均不工作。我复制了先前项目的代码,而先前项目的代码也不起作用。

节点版本:12.10.0速成版:4.17.1

我真的不知道我在哪里做错了,感谢您的帮助。

谢谢!

这是我的API:api在配置文件中

    api: {
        client: {
            prefix: "./api/user",
            url: [
                "/login",
                "/register",
                "/logout",
                "/search",
                "/address",
                "/cart",
                "/purchasedHistory",
                "/products",
                "/staticImg"
            ]
        },
        admin: {
            prefix: "./api/admin",
            url: [
                "/main"
            ]
        }
    }

这是我如何注册路由器

// route to display versions
app.get('/api', function (req, res) {
    res.json(config.api);
});
// REGISTER THE PREFIXES
for (var k in config.api) {
    config.api[k].url.forEach(aUrl => {
        app.use(aUrl, require(config.api[k].prefix + aUrl));        
    });
}

这里是login.js

const router = express.Router();

// logs all the api requests
router.use(function (req, res, next) {
    // TODO log the request here
    if (config.debug) console.log('login: someone has made a request');
    next(); // make sure we go to the next routes and don't stop here
});

router.get('/get', function(req, res) {
    res.json({ message: 'hahahahahahah' });   
});
//Return the router for the server
module.exports = router;

当我使用api时>

http://localhost:8080/api/

我得到以下结果

{"client":
    {"prefix":"./api/user","url":["/login"]},
"admin":
   {"prefix":"./api/admin","url":["/main"]}
}

但是当我运行一个api时>

http://localhost:8080/api/login/get

我收到此错误

Cannot GET /api/login/get

这是在调试模式下express的输出

  express:router dispatching GET /api/login/get +1m
  express:router query  : /api/login/get +0ms
  express:router expressInit  : /api/login/get +0ms
  express:router corsMiddleware  : /api/login/get +0ms
  express:router jsonParser  : /api/login/get +0ms
  express:router urlencodedParser  : /api/login/get +0ms
  express:router <anonymous>  : /api/login/get +0ms
  express:router haltOnTimedout  : /api/login/get +0ms

express的输出看起来很正常。

我正在使用Node.js作为移动应用程序的后端服务器,但是一些Express路由器无法正常工作。路由器均不工作。我复制了上一个项目中的代码,并且代码为...

回答如下:

以用于在所有请求上注册中间件的明文app.use,或者您可以在特定路径/路由上注册中间件,然后中间件将在指定的路径上执行。

这里您使用的是app.use('/login')而不是app.use('/api/login')。如果您按下http://localhost:8080/login/get,它将起作用,但是http://localhost:8080将不起作用。

Nodejs表示,路由器文件已加载,但路由器无法正常工作

我正在使用Node.js作为移动应用程序的后端服务器,但是一些Express路由器无法正常工作。路由器均不工作。我复制了先前项目的代码,而先前项目的代码也不起作用。

节点版本:12.10.0速成版:4.17.1

我真的不知道我在哪里做错了,感谢您的帮助。

谢谢!

这是我的API:api在配置文件中

    api: {
        client: {
            prefix: "./api/user",
            url: [
                "/login",
                "/register",
                "/logout",
                "/search",
                "/address",
                "/cart",
                "/purchasedHistory",
                "/products",
                "/staticImg"
            ]
        },
        admin: {
            prefix: "./api/admin",
            url: [
                "/main"
            ]
        }
    }

这是我如何注册路由器

// route to display versions
app.get('/api', function (req, res) {
    res.json(config.api);
});
// REGISTER THE PREFIXES
for (var k in config.api) {
    config.api[k].url.forEach(aUrl => {
        app.use(aUrl, require(config.api[k].prefix + aUrl));        
    });
}

这里是login.js

const router = express.Router();

// logs all the api requests
router.use(function (req, res, next) {
    // TODO log the request here
    if (config.debug) console.log('login: someone has made a request');
    next(); // make sure we go to the next routes and don't stop here
});

router.get('/get', function(req, res) {
    res.json({ message: 'hahahahahahah' });   
});
//Return the router for the server
module.exports = router;

当我使用api时>

http://localhost:8080/api/

我得到以下结果

{"client":
    {"prefix":"./api/user","url":["/login"]},
"admin":
   {"prefix":"./api/admin","url":["/main"]}
}

但是当我运行一个api时>

http://localhost:8080/api/login/get

我收到此错误

Cannot GET /api/login/get

这是在调试模式下express的输出

  express:router dispatching GET /api/login/get +1m
  express:router query  : /api/login/get +0ms
  express:router expressInit  : /api/login/get +0ms
  express:router corsMiddleware  : /api/login/get +0ms
  express:router jsonParser  : /api/login/get +0ms
  express:router urlencodedParser  : /api/login/get +0ms
  express:router <anonymous>  : /api/login/get +0ms
  express:router haltOnTimedout  : /api/login/get +0ms

express的输出看起来很正常。

我正在使用Node.js作为移动应用程序的后端服务器,但是一些Express路由器无法正常工作。路由器均不工作。我复制了上一个项目中的代码,并且代码为...

回答如下:

以用于在所有请求上注册中间件的明文app.use,或者您可以在特定路径/路由上注册中间件,然后中间件将在指定的路径上执行。

这里您使用的是app.use('/login')而不是app.use('/api/login')。如果您按下http://localhost:8080/login/get,它将起作用,但是http://localhost:8080将不起作用。

发布评论

评论列表 (0)

  1. 暂无评论