feat: 登录接口对接

This commit is contained in:
duanshuwen
2025-12-21 22:31:16 +08:00
parent ef4280e05d
commit 2fb6a0d7e9
9 changed files with 148 additions and 57 deletions

View File

@@ -1,9 +1,10 @@
import type { Plugin } from 'vue'
import logger from './logger'
export const errorHandler: Plugin = (app) => {
export const errorHandler: Plugin = (app) => {
app.config.errorHandler = (err, instance, info) => {
logger.error('Vue error:', err, instance, info);
// 过滤掉无法序列化的 Vue 实例对象
logger.error('Vue error:', err, info);
};
window.onerror = (message, source, lineno, colno, error) => {

View File

@@ -1,5 +1,67 @@
const safeStringify = (arg: any) => {
try {
// 处理 Error 对象
if (arg instanceof Error) {
return {
message: arg.message,
stack: arg.stack,
name: arg.name
}
}
// 简单值直接返回
if (typeof arg !== 'object' || arg === null) {
return arg
}
// 处理 Vue 响应式对象Proxy
if (arg?.__v_isRef || arg?.__v_isReactive || arg?.__v_isReadonly) {
// 尝试解包 Proxy/Ref
try {
const raw = JSON.parse(JSON.stringify(arg))
return raw
} catch (e) {
return '[Vue Reactive Object]'
}
}
// 尝试深拷贝,如果失败则说明包含不可序列化对象
const raw = JSON.parse(JSON.stringify(arg))
return raw
} catch (e) {
// 序列化失败,返回字符串描述
return String(arg)
}
}
export const logger = window.api.logger ?? console;
// 缓存原始 console 方法,防止递归调用和保持控制台输出
const originalConsole = {
debug: console.debug.bind(console),
log: console.log.bind(console),
info: console.info.bind(console),
warn: console.warn.bind(console),
error: console.error.bind(console),
}
const createSafeLogger = (originalLogger: any) => {
return {
debug: (message: string, ...meta: any[]) => {
originalConsole.debug(message, ...meta)
originalLogger.debug(String(message), ...meta.map(safeStringify))
},
info: (message: string, ...meta: any[]) => {
originalConsole.info(message, ...meta)
originalLogger.info(String(message), ...meta.map(safeStringify))
},
warn: (message: string, ...meta: any[]) => {
originalConsole.warn(message, ...meta)
originalLogger.warn(String(message), ...meta.map(safeStringify))
},
error: (message: string, ...meta: any[]) => {
originalConsole.error(message, ...meta)
originalLogger.error(String(message), ...meta.map(safeStringify))
},
}
}
export const logger = window.api.logger ? createSafeLogger(window.api.logger) : console
if (window.api.logger) {
console.debug = logger.debug;