Meteor.loginWithPassword не вызывает обратный вызов - PullRequest
0 голосов
/ 02 февраля 2019

Я добавляю функциональность учетной записи пользователя в приложение Meteor + React.

Для входа в систему, используя Meteor.loginWithPassword, я не получаю никаких признаков каких-либо особых исключений или сбоев в журнале сервера.Тем не менее, обратный вызов никогда не вызывается.

Запрос на вход в систему

При появлении надписи "Требуется вход в систему" появится сообщение на консоли.

Но «Вход в систему обработан» никогда не выполняется, показывая, что обратный вызов никогда не выполняется.

account-ui, а также account-passwords были добавлены в метеор.

Подписки по-прежнему работают, поэтому я не уверен, что приводит к сбою.

Я бы, по крайней мере, ожидал, что какое-то исключение будет выдано и на стороне сервера, но я не получаю никакой очевидной информации о том, что происходит.Вот мой код реакции:

import React from 'react';
import Meteor from 'meteor/meteor'
import { Input, Button } from 'react-onsenui'

class LoginPage extends React.Component{
    constructor(props) {
        super(props);

        this.state = {
          username: "",
          password: "",
        };
    }

    loginRequest(){
        console.log("Login Requested")
        Meteor.loginWithPassword(this.state.username, this.state.password, function(error){
            console.log("Login Processed");
        });
    }

    render(){
        return (
            <form className="LoginPage">
                <p>
                <Input
                    value={this.state.username} float
                    onChange={(event) => { this.setState({username: event.target.value})} }
                    modifier='material'
                    placeholder='Username' />
                </p>
                <p>
                <Input
                    value={this.state.password} float
                    onChange={(event) => { this.setState({password: event.target.value})} }
                    modifier='material'
                    placeholder='Password' />
                </p>
                <Button onClick={this.loginRequest.bind(this)} modifier="large--cta">Login</Button>
            </form>
        )
    }
}

export default LoginPage;

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Я считаю, что разница между импортом / экспортом по умолчанию и именованным импортом / экспортом.Вот объяснение: Когда я должен использовать фигурные скобки для импорта ES6?

Первый (без скобок) будет означать импорт по умолчанию.Вторым является именованный импорт, который совпадает с точным именем экспорта.

Это соответствует строке

api.export('Meteor');

, которую можно найти в основном пакете Meteor: https://github.com/meteor/meteor/blob/master/packages/meteor/package.js

Существует также объяснение информации о модуле в документах Meteor: https://docs.meteor.com/packages/modules.html#Basic-syntax

Вас также может заинтересовать эта тема на форумах Meteor: https://forums.meteor.com/t/how-do-you-know-the-name-to-import/26718

0 голосов
/ 03 февраля 2019

Хорошо, я наконец решил эту проблему.Каждый раз, когда я думаю, что понимаю Javascript, ясно, что я не понимаю.

Проблема связана с тем, как я импортировал Метеор.Я изменил

импорт Метеор из «Метеор / Метеор»

на

импорт {Метеор} из «Метеор / Метеор»

Я не знаюпочему это так, поэтому кто-то, пожалуйста, объясните, чтобы я больше не повторял эту ошибку.

...