Не удается опубликовать/ зарегистрировать ошибку в vue с помощью firebase

# #javascript #firebase #vue.js #firebase-authentication

Вопрос:

Я создаю интерфейсный веб-сайт Vue JS и пытаюсь установить механизм входа и регистрации с помощью Firebase. Я использую интерфейс командной строки Vue и успешно интегрировал приложение с firebase. Когда я использую метод createUserWithEmailAndPassword на странице регистрации и отправляю форму, она просто показывает «Не удается опубликовать/ зарегистрироваться», и пользователь не зарегистрирован в консоли firebase. Я делюсь кодом ниже. Любая помощь будет оценена по достоинству.

main.js

 import Vue from 'vue'
import App from './App.vue'
import 'jquery'
import 'popper.js'
import './assets/app.css'
import { initializeApp } from "firebase/app";
import router from './router'

Vue.component('Navbar', require('./components/Navbar.vue').default)
Vue.component('Cart', require('./components/Cart.vue').default)
Vue.component('Login', require('./components/Login.vue').default)
Vue.component('Register', require('./components/Register.vue').default)
Vue.config.productionTip = false

const firebaseConfig = {
  apiKey: "AIzaSyDwKw8bVZVlEOSUYhAbYhjHSzfyBZY0PsU",
  authDomain: "sit120-project.firebaseapp.com",
  projectId: "sit120-project",
  storageBucket: "sit120-project.appspot.com",
  messagingSenderId: "780558279869",
  appId: "1:780558279869:web:251ab9e3d9a286d64c83d4"
};

// Initialize Firebase
export const firebase_app = initializeApp(firebaseConfig);


new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
 

Регистрация.vue

 <template>
  <div class="register">
    
    <div class="center">
        <h1>Sign Up</h1>
        <form method="post">
            <div class="txt_field">
                <input v-model="fullname" type="text" required>
                <label for="">Full Name</label>
            </div>
            <div class="txt_field">
                <input v-model="email" type="text" required>
                <label for="">Email</label>
            </div>
            <div class="txt_field">
                <input v-model="username" type="text" required>
                <label for="">Username</label>
            </div>
            <div class="txt_field">
                <input v-model="password" type="password" required>
                <label for="">Password</label>
            </div>  

            <button @click="regist">Register</button>
        </form>
    </div>
    
  </div>
</template>

<script>

import {firebase_app} from '../main.js'
export default {
  name: 'Register',
  data(){
      return{
        fullname:null,
        email:null,
        username:null,
        password:null,
      }    
  },
  methods:{
      regist(){
         firebase_app.auth().createUserWithEmailAndPassword(this.email, this.password)
            .then((userCredential) => {
                // Signed in 
                var user = userCredential.user;
                // ...
            })
            .catch((error) => {
                var errorCode = error.code;
                var errorMessage = error.message;
                // ..
            });
      }
  },
  props: {
    msg: String
  }
}
</script>
 

router.js

 import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/admin/users',
    name: 'admin-users',
    component: AdminUsers
  },
  {
    path: '/about',
    name: 'About',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
  },
  {
    path: '/login',
    name: 'Login',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "login" */ '../components/Login.vue')
  },
  {
    path: '/register',
    name: 'Register',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "register" */ '../components/Register.vue')
  },
  {
    path: '/products',
    name: 'Products',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "products" */ '../views/Products.vue')
  }
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

export default router
 

Ответ №1:

Ошибка заключается в том, что вы публикуете и пытаетесь перенаправить пользователя по щелчку мыши.

Измените это

 <form method="post">
 

к этому:

 <form>
 

И это будет работать нормально.

Ошибка заключается в том, что вы пытаетесь перенаправить пользователя по щелчку мыши.