在import mockjs之后再挂载;
最初在import所有业务代码之后,才import mockjs,(import本身也是一个Promise,所以涉及到加载的时机)导致异步请求时,先走原本请求不到的接口,已经显示请求失败了,才开始走mockjs; 调整后的代码
const app = new Vue({
data: {
isExpire: false,
},
router,
render: h => h(App),
});
if (process.env.NODE_ENV === 'development') {
import('./mock').then(() => {
app.$mount('#app');
});
} else {
app.$mount('#app');
}
大小写不匹配
...
const data = mock.mock('/zhiyuadminBack/manageusers/getPassUsers', 'post', {
code: '0',
result: 'success',
msg: '成功',
...
追踪源码发现,必须为小写才能请求成功;因为mock的options会和request请求中的参数大小写不匹配导致无法send() xhr对象
function find(options) {
for (var sUrlType in MockXMLHttpRequest.Mock._mocked) {
var item = MockXMLHttpRequest.Mock._mocked[sUrlType]
if (
// 注意⚠️ 断点处 debugger; 原请求参数中被转为小写,而mock中如果为大写,无法match()
(!item.rurl || match(item.rurl, options.url)) &&
(!item.rtype || match(item.rtype, options.type.toLowerCase()))
) {
// console.log('[mock]', options.url, '>', item.rurl)
return item
}
}