我编写了一个自定义帐户包,通过我们的内部系统验证用户的电子邮件和密码。在我或任何其他人的计算机上本地运行时,这工作正常;用户可以登录并使用我们的流星应用程序。最近我已将应用程序部署到Modulus.io。部署顺利,没有任何错误,我可以加载站点的主页并执行不需要登录的操作。但是,当我尝试登录时,客户说我输入了错误的用户名/密码组合,并且服务器抛出此异常:
Exception while invoking method 'login' Error: setUserId must be called on string or null, not object
at [object Object]._.extend._setUserId (packages/ddp/livedata_server.js:701:1)
at [object Object].setUserId [as _setUserId] (packages/ddp/livedata_server.js:634:1)
at [object Object]._.extend.setUserId (packages/ddp/livedata_common.js:100:1)
at loginUser (packages/accounts-base/accounts_server.js:206:1)
at attemptLogin (packages/accounts-base/accounts_server.js:255:1)
at [object Object].Meteor.methods.login (packages/accounts-base/accounts_server.js:411:1)
at maybeAuditArgumentChecks (packages/ddp/livedata_server.js:1617:1)
at packages/ddp/livedata_server.js:648:1
at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
at packages/ddp/livedata_server.js:647:1
如您所见,异常的堆栈跟踪从不触及任何文件,除了accounts_base
andddp
包中的文件,这两个包都是由 Meteor Development Group 开发的。再加上我的本地机器上一切正常,这让我相信错误来自modulus.io
配置方式,而不是我自己的代码。
我的问题似乎与这个 Meteor GitHub 问题有关,有人遇到了和我一样的错误。不同之处在于他们正在处理一个已经有用户的数据库。我设置的modules.io MongoDB数据库完全是空的,只保留了roles
meteor包使用的一些条目。查看我的帐户包,我从不手动添加对象作为用户 ID,这也会导致项目无法在我的本地计算机上运行。
任何帮助将不胜感激。提前致谢!