【发布时间】: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' 时会发生什么?