【问题标题】:Getting a 404 on a route alias在路由别名上获取 404
【发布时间】:2018-06-14 15:52:01
【问题描述】:

我是 Node 和 Angular 的新手,我想弄清楚我的应用为什么会抛出 404。 这是我在 Firebug 中看到的主要错误:

 Cannot GET /api/user

在我的 server.js 中,我调用了路由:

 var express = require('express');
 var app = express();
 require('./routes')(app)

在路由文件夹中,我有 index.js(看起来它是用上述要求调用的)。

 module.exports = function(app) {
    app.use(restUtils.buildUrl('/api/user'), require('./user-api'));
 }

restUtils 只是返回:'/api/user' 并且 user-api 只是同一路由文件夹中的另一条路由。 我可以在 module.exports 中放置一个 console.log,这样我就可以在服务器启动时看到它在那里。看起来它正在生成 api/user 的别名。但是,当应用程序去查找 api/user 时,它会返回 404。

这是来自 user-api.js 的 sn-p:

 var router = require('express').Router(),
     config = require('../conf/config'),
     logger = require('../lib/logger'),
     restUtils = require('../lib/rest-utils');
 console.log("Inside User-Api");
 router.get('/', function(req,res) {
    console.log("Inside user-api - router.get");
    if (config.debug && config.secured) logger.info('USER: ', req.user)
    var user = {
        id: req.user ? req.user.id : '',
        displayName: req.user ? req.user.displayname : 'Unknown User',
        roles: req.user ? req.user.appRoles : [],
        groups: req.user ? req.user.appGroups : [],
        profile: req.user ? req.user.profile : {}
    };

    res.format({
       json: function() {
          res.send(user);
       }
    });
 });

 module.exports = router;

我在服务器启动时看到第一个 console.log,但它从未落入 router.get。

如果您认为我应该在不同的位置显示更多代码,请告诉我 - 只是不确定需要什么来尝试找出这个 404!也许应该调用router.get的用户api路由加载失败?我想我只是对路由和模块还不够了解。 谢谢!!

【问题讨论】:

  • 你能把所有的user-api都贴出来
  • 好的...发布了 user-api.js 的其余部分。我猜 req 语句是从用户证书中提取的。当用户第一次访问网站时传入。再一次,它似乎永远不会进入那个 router.get。感谢收看!
  • 你可以在你的 user-api.js 的末尾尝试 module.exports = router
  • 试过了...同样的错误。更新了上面的代码。感谢您的建议
  • 嗯,我认为如果您不在 user-api.js 上使用 module.export,nodejs 应该会崩溃。当您删除 restUtils.buildUrl 并在 index.js 中使用 '/api/user' 时会发生什么?

标签: node.js angular


【解决方案1】:

问题存在于

restUtils.buildUrl('/api/user') 

返回一个字符串'api/user',它需要是'/api/user'

【讨论】:

  • 我仔细看了看...原来restUtils返回“api/user”而不是“/api/user”!
【解决方案2】:

错误提示:

Cannot GET /api/user

所以它试图获取一条不存在的路线。您可以为 /api/user添加一条获取路线,这样可以解决我猜的错误。

app.get("/api/user",function(req,res){})

希望对你有帮助

【讨论】:

  • 我想你可能会在这里做点什么。我进行了这些更改,虽然我不再得到 404 ... firebug 只是显示带有小旋转轮的“GET 用户”(就像它仍在尝试加载某些东西一样)。最终状态为:Aborted。
猜你喜欢
  • 2020-04-14
  • 1970-01-01
  • 2016-04-01
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 2011-08-06
相关资源
最近更新 更多