内部システムを通じてユーザーの電子メールとパスワードを検証するカスタム アカウント パッケージを作成しました。私または他の誰かのコンピューターでローカルに実行している場合、これは正常に機能します。ユーザーはログインして流星アプリを使用できます。最近、アプリを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
およびddp
パッケージ内のファイル以外のファイルには触れません。これらのファイルは両方とも Meteor Development Group によって開発されています。modulus.io
これに加えて、ローカル マシンですべてが正常に動作しているという事実から、エラーは自分のコードではなく、構成方法に起因すると思われます。
私の問題は、誰かが私と同じエラーを受け取っていたこの Meteor GitHub issueに関連しているようです。違いは、既にユーザーが存在するデータベースを扱っていたことです。私がセットアップしたモジュラス.io MongoDB データベースは完全に空で、roles
meteor パッケージで使用されるいくつかのエントリを除きます。私のアカウント パッケージを見ると、オブジェクトをユーザー ID として手動で追加することは決してありません。これにより、ローカル マシンでもプロジェクトが動作しなくなります。
どんな助けでも大歓迎です。前もって感謝します!