我很确定我在这里错过了一个回调:
来自tools.js的:
exports.getServerPermalink = function(username, callback) {
requestURL = config.apiServer+ username + myUrl
request(requestURL, function (error, response, body) {
if (!error && response.statusCode == 200) {
list = JSON.parse(response.body);
console.log(list);
newPermalink = list[0].permalink;
} else {
console.log(error);
}
callback(null, newPermalink);
});
}
在这里调用,我的主文件(包括tools.js):
newPermalink = tools.getServerPermalink(checkSession.username);
res.redirect('/'+ newPermalink) ;
但我得到错误“undefined is is a function”指向
callback(null, newPermalink);
当我尝试运行它时。
任何指向“require”模块的示例的指针都不仅仅是console.log的内容。非常感谢。
答案 0 :(得分:3)
callback
似乎未定义,因为您没有将其传递给模块方法
应该是这样的:
tools.getServerPermalink(checkSession.username, function(argument, newPermalink){
res.redirect('/'+ newPermalink) ;
});
同样tools.getServerPermalink()
不直接返回url(它不会返回任何内容,因为内部请求是异步的)但是将它作为第二个参数传递给你的回调函数。
答案 1 :(得分:0)
你的exports.getServerPermalink是一个定义了2个参数的函数,但是当你调用它时,你只传入一个:newPermalink = tools.getServerPermalink(checkSession.username);