我正在使用带节点的expressjs来创建我的网络应用程序,但它没有按预期工作。
这里发生了一些非常奇怪的事情,如果我转到浏览器中的第一个链接,它会按预期运行,但如果我转到第二个链接,它就不会执行回调并返回null
。正如你可能会看到他们是完全相同的!
第一个API代码片段(第一个链接):
/**
* GET /workspace/friends/list
* JSON friend list API
*/
app.get('/workspace/friends/list', passportConf.isAuthenticated, function (req, res) {
var userFriends = [];
//console.log(req);
for (var i = 0; i < req.user.friends.length; i++) {
if (req.user.friends[i].verified) {
userFriends.push(req.user.friends[i]);
}
}
res.json(userFriends);
});
第二个API代码片段(第二个链接):
/**
* GET /workspace/friends/sentRequests/
* JSON friends requests list API
*/
//TODO: Fix API
app.get('/workspace/friends/sentRequests', passportConf.isAuthenticated, function (req, res) {
var userFriends = [];
//console.log(req);
for (var i = 0; i < req.user.friends.length; i++) {
if (!req.user.friends[i].verified) {
userFriends.push(req.user.friends[i]);
}
}
res.json(userFriends);
});
注意: 我还必须补充一点,如果我取消注释两个中的console.logs,我会从第一个而不是第二个获取日志。
这怎么可能?以前有人遇到过类似的东西吗?我怎么能解决它?
答案 0 :(得分:0)
好吧我明白了。它突然出现了一种Bug,它禁止一个人使用链接中的长和/或大写字符please see this issue I've created (issue #2256)。
因此,当我将其更改为以下内容时,它运行良好:
/**
* GET /workspace/friends/sentRequests/
* JSON friends requests list API
*/
//TODO: Fix API
app.get('/workspace/friends/requests/sent', passportConf.isAuthenticated, function (req, res) {
var userFriends = [];
console.log(req);
for (var i = 0; i < req.user.friends.length; i++) {
if (!req.user.friends[i].verified) {
userFriends.push(req.user.friends[i]);
}
}
res.json(userFriends);
});
注意: 我还没弄清楚错误的来源。
更新(2014年7月22日): 发生的事情是样板Skeleton为{{1}定义了Express的选项启用所以当我使用时也使用模块express-uncapitalize所以当我用大写字符定义链接并在浏览器中放置完全相同的链接时,它没有大写,表达无法找到该链接但没有说明(因为它区分大小写)。