# #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>
И это будет работать нормально.
Ошибка заключается в том, что вы пытаетесь перенаправить пользователя по щелчку мыши.