You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.7 KiB
4.7 KiB
🚨 模块导入错误修复
问题描述
错误信息:Error: Cannot find module '@/api/user/coupon'
这是因为某些文件导入了不存在的模块路径。
🔍 问题分析
错误原因
- 路径不存在:
src/api/user/coupon
目录不存在 - 接口迁移:优惠券相关接口已迁移到
src/api/shop/shopUserCoupon
- 导入未更新:部分文件仍使用旧的导入路径
实际目录结构
src/api/user/
├── balance-log/
├── points/
└── (没有coupon目录)
src/api/shop/
├── shopUserCoupon/ ← 正确的优惠券接口位置
└── ...
🔧 修复内容
1. src/user/coupon/coupon.tsx
修复前
import {pageUserCoupon, getUserCouponCount} from "@/api/user/coupon";
import {UserCoupon as UserCouponType} from "@/api/user/coupon/model";
修复后
import {pageShopUserCoupon as pageUserCoupon, getMyAvailableCoupons, getMyUsedCoupons, getMyExpiredCoupons} from "@/api/shop/shopUserCoupon";
import {ShopUserCoupon as UserCouponType} from "@/api/shop/shopUserCoupon/model";
函数实现更新
// 修复前
const loadCouponCount = () => {
getUserCouponCount(parseInt(userId))
.then((res: any) => {
setCouponCount(res)
})
}
// 修复后
const loadCouponCount = async () => {
try {
// 并行获取各种状态的优惠券数量
const [availableCoupons, usedCoupons, expiredCoupons] = await Promise.all([
getMyAvailableCoupons().catch(() => []),
getMyUsedCoupons().catch(() => []),
getMyExpiredCoupons().catch(() => [])
])
setCouponCount({
unused: availableCoupons.length || 0,
used: usedCoupons.length || 0,
expired: expiredCoupons.length || 0
})
} catch (error) {
console.error('Coupon count error:', error)
}
}
2. src/pages/user/components/UserCard.tsx
修复前
import {getUserCouponCount} from "@/api/user/coupon";
// 函数调用
getUserCouponCount(userId)
.then((res: any) => {
setCouponCount(res.unused || 0)
})
修复后
import {getMyAvailableCoupons} from "@/api/shop/shopUserCoupon";
// 函数调用
getMyAvailableCoupons()
.then((coupons: any) => {
setCouponCount(coupons?.length || 0)
})
📊 接口映射表
旧接口 | 新接口 | 说明 |
---|---|---|
@/api/user/coupon |
@/api/shop/shopUserCoupon |
优惠券API路径 |
pageUserCoupon |
pageShopUserCoupon |
分页查询优惠券 |
getUserCouponCount |
getMyAvailableCoupons + 计算 |
获取优惠券统计 |
UserCoupon |
ShopUserCoupon |
优惠券数据类型 |
🎯 新的API接口
可用的shopUserCoupon接口
// 分页查询
export async function pageShopUserCoupon(params: ShopUserCouponParam)
// 获取我的可用优惠券
export async function getMyAvailableCoupons()
// 获取我的已使用优惠券
export async function getMyUsedCoupons()
// 获取我的已过期优惠券
export async function getMyExpiredCoupons()
// 根据ID查询
export async function getShopUserCoupon(id: number)
// 增删改操作
export async function addShopUserCoupon(data: ShopUserCoupon)
export async function updateShopUserCoupon(data: ShopUserCoupon)
export async function removeShopUserCoupon(id?: number)
✅ 修复效果
修复前
❌ Error: Cannot find module '@/api/user/coupon'
❌ 页面无法加载
❌ 优惠券功能异常
修复后
✅ 模块导入正常
✅ 页面可以正常加载
✅ 优惠券统计功能正常
✅ 使用正确的API接口
🧪 验证方法
1. 编译验证
npm run build:weapp
应该没有模块找不到的错误。
2. 功能验证
- 用户卡片显示正确的优惠券数量
- 优惠券页面可以正常加载
- 优惠券列表可以正常显示
- 各个tab的统计数字正确
3. 控制台验证
- 没有模块导入错误
- API请求正常发送
- 数据正常返回
🔍 相关文件检查
确保以下文件都已正确更新:
- ✅
src/user/coupon/coupon.tsx
- ✅
src/pages/user/components/UserCard.tsx
- ✅
src/user/coupon/index.tsx
(之前已修复) - ✅
src/user/coupon/receive.tsx
(之前已修复)
🚀 后续建议
1. 统一接口使用
- 所有优惠券相关功能都使用
@/api/shop/shopUserCoupon
- 避免混用不同的API路径
2. 类型安全
- 使用
ShopUserCoupon
类型而不是any
- 添加适当的错误处理
3. 性能优化
- 考虑缓存优惠券统计数据
- 避免重复的API调用
现在模块导入错误应该已经完全修复,页面可以正常加载了! 🎉