追月亮的人
追月亮的人
  • 发布:2024-01-19 16:21
  • 更新:2024-01-19 16:21
  • 阅读:1049

有人遇到这个问题吗TypeError: (0 , _request.default) is not a function,求大神指教

分类:HBuilder

由于要做请求拦截和响应拦截,所以没有使用官方的uni.request,而是用axios封装了一层,在h5上运行没有问题,但在开发者工具上就报错了
import axios, { AxiosInstance } from 'axios';
import { Session } from '@/utils/storage';
import qs from 'qs';
import {saveAs} from 'file-saver';

let serverUrl = 'https://shfar.cwit.com.cn/';

// 配置新建一个 axios 实例
const service = axios.create({
baseURL: serverUrl,
timeout: 50000,
headers: { 'Content-Type': 'application/json' },
paramsSerializer: {
serialize(params) {
return qs.stringify(params, { allowDots: true });
},
},
});

// 添加请求拦截器
service.interceptors.request.use(
(config) => {
//config.headers['X-Access-Token'] = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2OTIxODgyNTIsInVzZXJuYW1lIjoiMTgzOTA4NDA5NDYifQ.ET0SjxvbI3PJKQswOa4kI-r_8RrMLNDjBKv20gQ6JWg';
// 在发送请求之前做些什么 token
if (Session.get('token')) {
config.headers['X-Access-Token'] = ${Session.get('token')};
}
return config;
},
(error) => {
// 对请求错误做些什么
return Promise.reject(error);
}
);

// 添加响应拦截器
service.interceptors.response.use(
(response) => {
// 对响应数据做点什么
const res = response.data;
if (res.code && res.code !== 200) {
// token 过期或者账号已在别处登录
if (res.code === 401 || res.code === 4001) {
Session.clear(); // 清除浏览器全部临时缓存
// const vppath = import.meta.env.VITE_PUBLIC_PATH;
uni.showModal({
title: '提示',
content:'你已被登出,请重新登录',
showCancel:false,
}).then(() => {
window.location.href = '/'; // 去登录页
})
.catch(() => {
window.location.href = '/'; // 去登录页
});
} else if (res.code === 402) {
uni.showToast({
title: '账号密码错误',
icon: 'error'
});
} else if (res.code === 500) {
uni.showToast({
title: '服务器内部错误:' + res.msg,
icon: 'error'
});
} else if (res.code === 222) {
return response.data;
} else if (res.code === 202) {
ElMessage({
type: "warning",
message: res.msg,
offset:300,
center: true,
dangerouslyUseHTMLString: true,
})
} else {
uni.showToast({
title: '未知错误' + res.code + ':' + res.msg,
icon: 'error'
});
}
return Promise.reject(service.interceptors.response);
} else {
// console.log(response);
if (res.size) {
let blob = new Blob([res], {type: "application/xlsx"});
let filename = decodeURI(response.headers['download-filename']);
// let filename=decodeURI(response.headers['FileDownloadName']);
saveAs(blob, filename)
// let url = window.URL.createObjectURL(blob);
// const link = document.createElement("a"); // 创建a标签
// link.href = url;
// link.download = decodeURI(response.headers['download-filename']); // 重命名文件
// link.click();
// URL.revokeObjectURL(url);
} else {
return res.result ?? res;
}
}
},
(error) => {
// 对响应错误做点什么
if (error.message.indexOf('timeout') != -1) {
uni.showToast({
title: '网络超时',
icon: 'error'
});
} else if (error.message == 'Network Error') {
uni.showToast({
title: '网络连接错误',
icon: 'error'
});
} else if (error.response.status == 401) {
Session.clear(); // 清除浏览器全部临时缓存
// const vppath = import.meta.env.VITE_PUBLIC_PATH;

        uni.showModal({  
            title: '提示',  
            content:'你已被登出,请重新登录',  
            showCancel:false,  
        }).then(() => {  
            uni.navigateTo({  
                url:'/pages/login/login'  
            })  
                // window.location.href = '/'; // 去登录页  
            })  
            .catch(() => {  
                uni.navigateTo({  
                    url:'/pages/login/login'  
                })  
                //window.location.href = '/'; // 去登录页  
            });  
    } else if (error.response.status == 403) {  
        uni.showToast({  
            title: '权限不足',  
            icon: 'error'  
        });  
    } else if (error.response.status == 404) {  
        uni.showToast({  
            title: '接口地址不存在',  
            icon: 'error'  
        });  
    }  else if (error.response.status == 500) {  
        uni.showToast({  
            title: '服务器内部错误',  
            icon: 'error'  
        });  
    } else {  
        if (error.response.data){  
            uni.showToast({  
                title: error.response.statusText,  
                icon: 'error'  
            });  
        }  
        else{  
            uni.showToast({  
                title: '未知错误',  
                icon: 'error'  
            });  
        }  
    }  
    return Promise.reject(error);  
}  

);

// 导出 axios 实例
export default service;
这是封装的


import request from '@/utils/request2';
async login() {
const data = await loginUser({
username: this.number,
password: this.password,
captcha: '',
checkKey: '',
remember_me: true,
})
...................
}

2024-01-19 16:21 负责人:无 分享
已邀请:

要回复问题请先登录注册