0

我很确定我在这里的某个地方错过了回调:

来自工具.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) ;   

但我收到错误“未定义不是函数”指向

      callback(null, newPermalink);

当我尝试运行它时。

任何指向“require”模块示例的指针,而不仅仅是 console.log 的东西,我们将不胜感激。

4

2 回答 2

3

callback似乎是未定义的,因为您没有将它传递给您的模块方法

应该是这样的:

tools.getServerPermalink(checkSession.username, function(argument, newPermalink){
    res.redirect('/'+ newPermalink) ;
});

也不tools.getServerPermalink()直接返回 url(它不返回任何内容,因为内部请求是异步的),而是将其作为第二个参数传递给回调函数。

于 2013-08-10T23:16:25.530 回答
0

您的exports.getServerPermalink 是一个定义了2 个参数的函数,但是当您调用它时,您只传入一个: newPermalink = tools.getServerPermalink(checkSession.username);

于 2013-08-10T23:16:40.603 回答