Files
012-kaopeilian/知识库/问题修复/问题修复记录.md
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

3.7 KiB
Raw Blame History

前端模块加载错误修复记录

日期2025-10-16
问题assignment-center.vue 页面加载 task.ts 模块失败
状态 已修复


错误信息

GET http://localhost:3001/src/api/task.ts net::ERR_ABORTED 500 (Internal Server Error)
Router error: TypeError: Failed to fetch dynamically imported module

问题分析

新创建的 kaopeilian-frontend/src/api/task.ts 文件存在以下问题:

  1. 错误的导入路径:使用了不存在的 @/utils/request
  2. 错误的类型导入:从不存在的 ./types 导入 ResponseModel
  3. 错误的HTTP客户端:使用了不存在的 request 对象

解决方案

修改内容

文件kaopeilian-frontend/src/api/task.ts

修改前:

import request from '@/utils/request'
import type { ResponseModel } from './types'

export function getTasks(...) {
  return request.get('/api/v1/manager/tasks', { params })
}

修改后:

import { http } from '@/utils/http'
import type { ResponseModel } from '@/types/practice'

export function getTasks(...) {
  return http.get('/api/v1/manager/tasks', { params })
}

修改清单

  1. 导入:@/utils/request@/utils/http
  2. 类型:./types@/types/practice
  3. 客户端:request.xxxhttp.xxx所有6个API方法

额外操作

  1. 清理Vite缓存rm -rf node_modules/.vite
  2. 重启前端容器:docker restart kaopeilian-frontend-dev

验证步骤

  1. 检查前端服务状态

    docker ps | grep frontend
    # 状态Up 18 seconds (healthy) ✅
    
  2. 验证文件修复

    cat kaopeilian-frontend/src/api/task.ts | head -10
    # 确认导入已修正 ✅
    
  3. 浏览器测试

    • 强制刷新页面Ctrl+Shift+R 或 Cmd+Shift+R
    • 访问任务中心:/manager/assignment-center
    • 检查控制台无错误

技术说明

项目HTTP客户端架构

本项目使用以下HTTP客户端配置

  1. HTTP客户端@/utils/http.ts

    • 基于 axios 的增强请求库
    • 集成认证、错误处理、重试等功能
    • 导出:http 对象
  2. 类型定义@/types/practice.ts

    • 定义 ResponseModel<T> 接口
    • 统一API响应格式
  3. 使用示例

    import { http } from '@/utils/http'
    import type { ResponseModel } from '@/types/practice'
    
    export function getData(): Promise<ResponseModel<Data>> {
      return http.get('/api/v1/data')
    }
    

为什么不使用 request

  • @/utils/request.ts 文件不存在
  • 项目没有导出 request 对象
  • 正确的是使用 http 对象

相关文件

修改的文件

  • kaopeilian-frontend/src/api/task.ts

相关文件

  • kaopeilian-frontend/src/utils/http.ts - HTTP客户端实现
  • kaopeilian-frontend/src/types/practice.ts - 类型定义
  • kaopeilian-frontend/src/views/manager/assignment-center.vue - 使用task API的页面

经验总结

  1. 创建新API文件时检查项

    • 使用正确的HTTP客户端http 而非 request
    • 从正确位置导入类型(@/types/practice
    • 遵循项目现有的API文件模式
  2. 参考现有API文件

    • kaopeilian-frontend/src/api/practice.ts - 正确的导入示例
    • kaopeilian-frontend/src/api/exam/index.ts - API封装参考
  3. 调试模块加载错误

    • 检查导入路径是否正确
    • 检查导入的对象是否存在
    • 清理缓存并重启服务

状态

问题已解决
前端服务运行正常
task.ts 模块可以正常加载

下一步:用户在浏览器刷新页面后,任务中心应能正常加载真实数据。