Перенаправить на другую страницу при отправке JavaScript - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь интегрировать аутентификацию firebase в приложение node js express.

Но я получаю эту ошибку:

nexttick. js: 45 Uncaught Ошибка типа: Не удается прочитать свойство 'redirect' из неопределенного

Это мой register.js файл:

signUpForm.addEventListener('submit', (e) => {
    e.preventDefault();

    //get user info
    const email = signUpForm["email"].value;
    const password = signUpForm["password"].value;

    //sign up the user
    auth.createUserWithEmailAndPassword(email, password).then((req, res) => {
        res.redirect('/');
    })
});

Может кто-нибудь сказать мне, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Ну, во-первых, обещание не может вернуть два или более значений, вот пример

new Promise((res) => res(1, 2, 3, 4))
      .then((a, b, c, d) => console.log(a, b, c, d));

Та же история с отказом в обещании, на выходе может быть только один аргумент

new Promise((_, rej) => rej(1, 2, 3, 4))
      .catch((a, b, c, d) => console.log(a, b, c, d));

Во-вторых, используемый вами метод возвращает <UserCredential> в ответе, а не request, response. Здесь уже была предложена ссылка https://firebase.google.com/docs/reference/js/firebase.auth.Auth#create -user-with-email-and-password

Как сделать перенаправление в браузере без express: уже было предложено: { ссылка }

0 голосов
/ 20 февраля 2020

Вы используете auth.createUserWithEmailAndPassword неправильный путь. Этот метод является обещанием, поэтому можно присоединить .then или .catch к нему, однако, как я видел в документации, обещание auth.createUserWithEmailAndPassword не разрешает параметры req или res, подобные вам. добавляется к методу .then и отклоняется при возникновении ошибки в процессе создания пользователя. Вот как вы должны использовать этот метод:

auth.createUserWithEmailAndPassword(email, password)
.then(() => {
  window.location.replace('/')
})
.catch((error) => {
  // Handle errors here.
});

Вы можете взглянуть на this do c для возможных типов ошибок, которые могут быть отклонены.

Для перенаправления вы можете использовать API location.replace или location.assign, доступные в качестве глобальных переменных в браузере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...