72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
import { createApp, nextTick } from 'vue'
|
|
import { createPinia } from 'pinia'
|
|
import Toast from 'vue-toastification'
|
|
import 'vue-toastification/dist/index.css'
|
|
|
|
import App from './App.vue'
|
|
import router from './router'
|
|
import './style.css'
|
|
|
|
// Créer l'application
|
|
const app = createApp(App)
|
|
|
|
// Créer et configurer Pinia
|
|
const pinia = createPinia()
|
|
|
|
// Toast configuration
|
|
const toastOptions = {
|
|
position: 'top-right',
|
|
timeout: 3000,
|
|
closeOnClick: true,
|
|
pauseOnFocusLoss: true,
|
|
pauseOnHover: true,
|
|
draggable: true,
|
|
draggablePercent: 0.6,
|
|
showCloseButtonOnHover: false,
|
|
hideProgressBar: false,
|
|
closeButton: 'button',
|
|
icon: true,
|
|
rtl: false
|
|
}
|
|
|
|
// Installer les plugins dans l'ordre correct
|
|
// IMPORTANT: Pinia doit être installé AVANT le router
|
|
app.use(pinia)
|
|
app.use(Toast, toastOptions)
|
|
|
|
// Maintenant installer le router
|
|
app.use(router)
|
|
|
|
// Handler d'erreur global pour capturer les erreurs non catchées
|
|
window.addEventListener('error', (event) => {
|
|
console.error('❌ Erreur JavaScript globale:', {
|
|
message: event.message,
|
|
filename: event.filename,
|
|
lineno: event.lineno,
|
|
colno: event.colno,
|
|
error: event.error,
|
|
stack: event.error?.stack
|
|
})
|
|
})
|
|
|
|
// Handler pour les promesses rejetées non catchées
|
|
window.addEventListener('unhandledrejection', (event) => {
|
|
console.error('❌ Promesse rejetée non catchée:', {
|
|
reason: event.reason,
|
|
promise: event.promise,
|
|
stack: event.reason?.stack
|
|
})
|
|
// Empêcher le message d'erreur par défaut dans la console
|
|
event.preventDefault()
|
|
})
|
|
|
|
// Attendre que le router soit prêt avant de monter l'app
|
|
router.isReady().then(() => {
|
|
app.mount('#app')
|
|
console.log('🚀 Application montée avec succès')
|
|
}).catch((error) => {
|
|
console.error('❌ Erreur lors du montage de l\'application:', error)
|
|
// Fallback: monter l'app même en cas d'erreur
|
|
app.mount('#app')
|
|
})
|