TypeScript + Vue3 + mock使用过程中遇到的问题记录:mockjs发送带有参数的get的请求返回结果404,得不到响应结果

8 篇文章 0 订阅

问题描述

 问题①:TypeScript + Vue3 使用import Mock from 'mock'引入mockjs引入时报错,如下:

Cannot find module 'mockjs' or its corresponding type declarations.

 问题②:前端项目开发中利用mockJs作为假数据进行请求模拟的过程中,使用Mockjs模拟带有参数的get请求的时候,报错404无法返回正确的结果。

mock相关代码

在发送axios请求之后报错404,如下图:

在这里插入图片描述


原因分析:

问题一:

  进入到mockjs目录下的index.ts文件,我们可以看到mockjs的导出方式为:export = mockjs。这也正是导致ts报错的原因,因为导出的方式不是CommonJs或ESModule的形式,因此我们要做出相应的配置。

解决方法:

 安装@types/mockjs对mockJs进行声明,使用命令npm i @types/mockjs --save-dev 或是-S都可以,这里要注意,使用yarn add @types/mockjs -S并没有效果,不知是不是我工程的问题,大家可以试一下。

问题二:

  其实这个问题是因为我当时想的比较简单,以为mockjs可以自动获取到query参数,即请求路径?后面的参数,其实这是不行的,在mock中的路径如果为字符串,则需要完整匹配。

解决方法:

 解决方法其实也比较简单,只要我们将字符串匹配改为正则匹配即可,之后便可以匹配到这一次的mock请求了,同时我们可以得到mockjs传入的参数msg:

修改为正则

msg对象结构如下:

msg对象结构

这一块的完整代码如下:

mockjs返回完整代码

再一次尝试后,结果如下:

完善后结果

总结

 可以看到,在使用正则表达式之后问题就迎刃而解了。(因为今晚的游戏行为,导致现在完成文章到写总结的时候已经00:54:09了)。所以还有一些没有完善的地方,只能等下一次再写了。
 如果有想看完整代码的小伙伴,可以到我的gitee上查看,具体的链接如下:
https://gitee.com/Crivk/csdn-related-demo/tree/master/Vue/v3-ts-mockjs。那么这一次的文章就先到这里啦,最近还有一个BaiduMap城市组件使用的分享还在写,但是因为懒还没有怎么写,争取这个周末把它发出来!

补充

2022.9.2

 对参数解析这一块做了优化,使用另一个变量去接取参数。另外在解析字符串的时候也可以使用正则表达式的分组表达式去截取,不过我感觉这个正则的意义不大,直接使用字符串截取再进行转换更为实在。

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Donp1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值