forked from jsnbuchanan/crowd-funder-for-time-pwa
- Add logger import across multiple view components - Replace console.error/warn/log with logger methods - Update error handling to use structured logging - Improve type safety for error objects - Add crypto-browserify polyfill for browser environment The changes improve logging by: 1. Using consistent logging interface 2. Adding structured error logging 3. Improving error type safety 4. Centralizing logging configuration 5. Fixing browser compatibility issues Affected files: - Multiple view components - vite.config.ts - Build configuration
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { createPinia } from "pinia";
|
|
import { App as VueApp, ComponentPublicInstance, createApp } from "vue";
|
|
import App from "./App.vue";
|
|
import "./registerServiceWorker";
|
|
import router from "./router";
|
|
import axios from "axios";
|
|
import VueAxios from "vue-axios";
|
|
import Notifications from "notiwind";
|
|
import "./assets/styles/tailwind.css";
|
|
import { FontAwesomeIcon } from "./lib/fontawesome";
|
|
import Camera from "simple-vue-camera";
|
|
import { logger } from "./utils/logger";
|
|
|
|
// Can trigger this with a 'throw' inside some top-level function, eg. on the HomeView
|
|
function setupGlobalErrorHandler(app: VueApp) {
|
|
// @ts-expect-error 'cause we cannot see why config is not defined
|
|
app.config.errorHandler = (
|
|
err: Error,
|
|
instance: ComponentPublicInstance | null,
|
|
info: string,
|
|
) => {
|
|
logger.error(
|
|
"Ouch! Global Error Handler.",
|
|
"Error:",
|
|
err,
|
|
"- Error toString:",
|
|
err.toString(),
|
|
"- Info:",
|
|
info,
|
|
"- Instance:",
|
|
instance,
|
|
);
|
|
// Want to show a nice notiwind notification but can't figure out how.
|
|
alert(
|
|
(err.message || "Something bad happened") +
|
|
" - Try reloading or restarting the app.",
|
|
);
|
|
};
|
|
}
|
|
|
|
const app = createApp(App)
|
|
.component("fa", FontAwesomeIcon)
|
|
.component("camera", Camera)
|
|
.use(createPinia())
|
|
.use(VueAxios, axios)
|
|
.use(router)
|
|
.use(Notifications);
|
|
|
|
setupGlobalErrorHandler(app);
|
|
|
|
app.mount("#app");
|