找出Node冻结的位置?

时间:2013-08-09 19:44:06

标签: javascript node.js passport.js

我正在设置Passport以通过LDAP进行身份验证(使用passport-ldap),并且每当用户无法登录时,它都会成功加载我的failureDirect链接。但是,如果我成功登录(或者我认为),程序就会挂起。没有收到任何错误;我的浏览器似乎正在加载(“等待服务器...”)。有没有办法确切地看到Passport冻结的地方,而没有经过所调用的函数的整个跟踪并在每个函数中放入console.log语句?

在我的路线中:

app.post('/users/session',
  passport.authenticate('ldap', {
    failureRedirect: '/login_fail',
    successRedirect: '/admin'
  }), users.session)

在我的passport.js文件中:

var LDAPStrategy = require('passport-ldap').Strategy

[...]

passport.use(new LDAPStrategy({
  server:{
    url: 'ldap://[MY_URL]:3268',
    },
  base: '[HIDDEN]',
  search: {
    filter: "(&(objectclass=user)(sAMAccountname={{username}}))",
    }
  },
  function(user, done) {
    console.log("Success")
    return done(null, JSON.parse(user));
  }
))

2 个答案:

答案 0 :(得分:1)

节点调试器可能有点冗长。好旧的console.error应该做的伎俩。该接口与console.log相同,但是替代console.error阻塞,直到IO完成以显示文本。这将为您提供有关代码死亡位置的准确指示。唯一的缺点是你必须添加几行代码:

console.error( 'debug1' );
console.error( 'debug2' );
console.error( 'debug3' );

答案 1 :(得分:0)

你可能想看看这个: http://nodejs.org/api/debugger.html

Node.js调试器。我想通过代码来找出它冻结的地方会非常有用。

除非您在浏览器中看到冻结,否则使用标准代码检查器应该可以使用(Firebug或Chrome Inspector)