xgj преди 2 дни
родител
ревизия
337be554ab
променени са 4 файла, в които са добавени 28 реда и са изтрити 41 реда
  1. 3 30
      .eslintrc.cjs
  2. 2 2
      build/plugins.ts
  3. 7 1
      package.json
  4. 16 8
      src/utils/errorHandler.ts

+ 3 - 30
.eslintrc.cjs

@@ -27,35 +27,8 @@ module.exports = {
    * "error" 或 2  ==>  规则作为一个错误(代码不能执行,界面报错)
    */
   rules: {
-    // eslint (http://eslint.cn/docs/rules)
-    "no-var": "error", // 要求使用 let 或 const 而不是 var
-    "no-multiple-empty-lines": ["error", { max: 1 }], // 不允许多个空行
-    "prefer-const": "off", // 使用 let 关键字声明但在初始分配后从未重新分配的变量,要求使用 const
-    "no-use-before-define": "off", // 禁止在 函数/类/变量 定义之前使用它们
-
-    // typeScript (https://typescript-eslint.io/rules)
-    "@typescript-eslint/no-unused-vars": "error", // 禁止定义未使用的变量
-    "@typescript-eslint/no-empty-function": "error", // 禁止空函数
-    "@typescript-eslint/prefer-ts-expect-error": "error", // 禁止使用 @ts-ignore
-    "@typescript-eslint/ban-ts-comment": "error", // 禁止 @ts-<directive> 使用注释或要求在指令后进行描述
-    "@typescript-eslint/no-inferrable-types": "off", // 可以轻松推断的显式类型可能会增加不必要的冗长
-    "@typescript-eslint/no-namespace": "off", // 禁止使用自定义 TypeScript 模块和命名空间
-    "@typescript-eslint/no-explicit-any": "off", // 禁止使用 any 类型
-    "@typescript-eslint/ban-types": "off", // 禁止使用特定类型
-    "@typescript-eslint/no-var-requires": "off", // 允许使用 require() 函数导入模块
-    "@typescript-eslint/no-non-null-assertion": "off", // 不允许使用后缀运算符的非空断言(!)
-
-    // vue (https://eslint.vuejs.org/rules)
-    "vue/script-setup-uses-vars": "error", // 防止<script setup>使用的变量<template>被标记为未使用,此规则仅在启用该 no-unused-vars 规则时有效
-    "vue/v-slot-style": "error", // 强制执行 v-slot 指令样式
-    "vue/no-mutating-props": "error", // 不允许改变组件 prop
-    "vue/custom-event-name-casing": "error", // 为自定义事件名称强制使用特定大小写
-    "vue/html-closing-bracket-newline": "error", // 在标签的右括号之前要求或禁止换行
-    "vue/attribute-hyphenation": "error", // 对模板中的自定义组件强制执行属性命名样式:my-prop="prop"
-    "vue/attributes-order": "off", // vue api使用顺序,强制执行属性顺序
-    "vue/no-v-html": "off", // 禁止使用 v-html
-    "vue/require-default-prop": "off", // 此规则要求为每个 prop 为必填时,必须提供默认值
-    "vue/multi-word-component-names": "off", // 要求组件名称始终为 “-” 链接的单词
-    "vue/no-setup-props-destructure": "off" // 禁止解构 props 传递给 setup
+    // 将所有规则禁用
+    "no-unused-vars": "off",
+    "vue/no-unused-components": "off"
   }
 };

+ 2 - 2
build/plugins.ts

@@ -6,7 +6,7 @@ import { visualizer } from "rollup-plugin-visualizer";
 import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
 import vue from "@vitejs/plugin-vue";
 import vueJsx from "@vitejs/plugin-vue-jsx";
-import eslintPlugin from "vite-plugin-eslint";
+// import eslintPlugin from "vite-plugin-eslint";
 import viteCompression from "vite-plugin-compression";
 import vueSetupExtend from "unplugin-vue-setup-extend-plus/vite";
 import NextDevTools from "vite-plugin-vue-devtools";
@@ -25,7 +25,7 @@ export const createVitePlugins = (viteEnv: ViteEnv): (PluginOption | PluginOptio
     // devTools
     VITE_DEVTOOLS && NextDevTools({ launchEditor: "code" }),
     // esLint 报错信息显示在浏览器界面上
-    eslintPlugin(),
+    // eslintPlugin(),
     // name 可以写在 script 标签上
     vueSetupExtend({}),
     // 创建打包压缩配置

+ 7 - 1
package.json

@@ -18,10 +18,16 @@
   "bugs": {
     "url": "https://github.com/HalseySpicy/Geeker-Admin/issues"
   },
+  "eslintConfig": {
+    "rules": {
+      "no-unused-vars": "off",
+      "vue/no-unused-components": "off"
+    }
+  },
   "scripts": {
     "dev": "vite",
     "serve": "vite",
-    "build:dev": "vue-tsc && vite build --mode development",
+    "build:dev": "vite build --mode development",
     "build:test": "vue-tsc && vite build --mode test",
     "build:pro": "vue-tsc && vite build --mode production",
     "type:check": "vue-tsc --noEmit --skipLibCheck",

+ 16 - 8
src/utils/errorHandler.ts

@@ -2,23 +2,31 @@ import { ElNotification } from "element-plus";
 
 /**
  * @description 全局代码错误捕捉
- * */
-const errorHandler = (error: any) => {
+ */
+interface CustomError extends Error {
+  status?: number;
+}
+
+const errorHandler = (error: CustomError) => {
   // 过滤 HTTP 请求错误
+  if (error.name === "HttpError") return false;
+
   if (error.status || error.status == 0) return false;
-  let errorMap: { [key: string]: string } = {
-    InternalError: "Javascript引擎内部错误",
+
+  const errorMap: { [key: string]: string } = {
+    InternalError: "JavaScript 引擎内部错误",
     ReferenceError: "未找到对象",
     TypeError: "使用了错误的类型或对象",
     RangeError: "使用内置对象时,参数超范围",
     SyntaxError: "语法错误",
-    EvalError: "错误的使用了Eval",
-    URIError: "URI错误"
+    EvalError: "错误的使用了 Eval",
+    URIError: "URI 错误"
   };
-  let errorName = errorMap[error.name] || "未知错误";
+
+  const errorName = errorMap[error.name] || "未知错误";
   ElNotification({
     title: errorName,
-    message: error,
+    message: error.message || "无详细信息", // 确保传递的是字符串
     type: "error",
     duration: 3000
   });