1***@163.com
1***@163.com
  • 发布:2023-07-03 12:24
  • 更新:2023-07-03 14:34
  • 阅读:518

浏览器上正常,但是手机模拟器上报错uni.getStorageSync is not a function???

分类:uni-app
2023-07-03 12:24 负责人:无 分享
已邀请:
Diligent_UI

Diligent_UI - 【插件开发】【专治疑难杂症】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=193663(微信搜索飘逸科技UI小程序直接体验)】【骗子请绕道】问题咨询请加QQ群:120594820,代表作灵感实用工具小程序

在什么生命周期里面调用的方法

  • 1***@163.com (作者)

    自己封装的axios中,代码示例:

    function getToken(key) {

    const value = uni.getStorageSync(key);

    return value;

    }


    export const myRequest = (options) => {

    return new Promise((resolve, reject) => {

    let isToken = getToken('token');

    if (isToken) {

    uni.request({

    url: baseURL + options.url, //接口地址:前缀+方法中传入的地址

    method: options.method || 'GET', //请求方法:传入的方法或者默认是“GET”

    data: options.data || {}, //传递参数:传入的参数或者默认传递空集合

    dataType: options.dataType || "json",

    header: {

    'Authorization': 'Bearer ' + isToken, //自定义请求头信息

    'Content-Type': 'application/json;charset=utf-8'

    },

    success: (res) => {

    const code = res.data.code || 200

    // 获取错误信息

    const msg = errorCode[code] || res.data.msg || errorCode['default']

    if (code === 401) {

    uni.showModal({

    title: '系统提示',

    content: '登录状态已过期,您可以继续留在该页面,或者重新登录',

    success: function(res) {

    if (res.confirm) {

    // 退出登录

    logout().then(res => {

    uni.reLaunch({

    url: '/pages/login/index'

    });

    uni.clearStorage();

    uni.clearStorageSync();

    removeToken

    })

    } else if (res.cancel) {

    console.log('用户点击取消');

    }

    }

    });


                    } else if (code === 302) { //用户另一端登录  
    uni.showModal({
    title: msg,
    showCancel: false,
    success: function(res) {
    if (res.confirm) {
    uni.reLaunch({
    url: '/pages/login/index'
    });
    uni.clearStorage();
    uni.clearStorageSync();
    removeToken
    }
    }
    });
    } else if (code === 500) {
    if (msg != constant.TASK_NOT_EXIST) {
    uni.showToast({
    title: msg,
    icon: 'fail',
    duration: 2000
    });

    }
    } else if (code !== 200) {
    uni.showToast({
    title: msg,
    icon: 'fail',
    duration: 2000
    });
    } else {
    resolve(res.data);
    }
    },
    // 这里的接口请求,如果出现问题就输出接口请求失败
    fail: (error) => {
    let {
    message
    } = error;
    if (message == "Network Error") {
    message = "后端接口连接异常";
    } else if (message.includes("timeout")) {
    message = "系统接口请求超时";
    } else if (message.includes("Request failed with status code")) {
    message = "系统接口" + message.substr(message.length - 3) + "异常";
    }
    uni.showToast({
    title: message,
    icon: 'fail',
    duration: 2000
    });
    }
    })

    } else {
    uni.request({
    url: baseURL + options.url, //接口地址:前缀+方法中传入的地址
    method: options.method || 'GET', //请求方法:传入的方法或者默认是“GET”
    data: options.data || {}, //传递参数:传入的参数或者默认传递空集合
    dataType: options.dataType || "json",
    header: {
    // 'Authorization': 'Bearer ' + uni.getStorageSync('token'), //自定义请求头信息
    'Content-Type': 'application/json;charset=utf-8'
    // 'visa': uni.getStorageSync('userId'), //自定义请求头信息
    // 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
    },
    success: (res) => {
    const code = res.data.code || 200
    // 获取错误信息
    const msg = errorCode[code] || res.data.msg || errorCode['default']
    if (code === 401) {
    uni.showModal({
    title: '系统提示',
    content: '登录状态已过期,您可以继续留在该页面,或者重新登录',
    success: function(res) {
    if (res.confirm) {
    // 退出登录
    logout().then(res => {
    uni.reLaunch({
    url: '/pages/login/index'
    });
    uni.clearStorage();
    uni.clearStorageSync();
    removeToken
    })
    } else if (res.cancel) {
    console.log('用户点击取消');
    }
    }
    });

    } else if (code === 302) { //用户另一端登录
    uni.showModal({
    title: msg,
    showCancel: false,
    success: function(res) {
    if (res.confirm) {
    uni.reLaunch({
    url: '/pages/login/index'
    });
    uni.clearStorage();
    uni.clearStorageSync();
    removeToken
    }
    }
    });
    } else if (code === 500) {
    if (msg != constant.TASK_NOT_EXIST) {
    uni.showToast({
    title: msg,
    icon: 'fail',
    duration: 2000
    });

    }
    } else if (code !== 200) {
    uni.showToast({
    title: msg,
    icon: 'fail',
    duration: 2000
    });
    } else {
    resolve(res.data);
    }
    },
    // 这里的接口请求,如果出现问题就输出接口请求失败
    fail: (error) => {
    let {
    message
    } = error;
    if (message == "Network Error") {
    message = "后端接口连接异常";
    } else if (message.includes("timeout")) {
    message = "系统接口请求超时";
    } else if (message.includes("Request failed with status code")) {
    message = "系统接口" + message.substr(message.length - 3) + "异常";
    }
    uni.showToast({
    title: message,
    icon: 'fail',
    duration: 2000
    });
    }
    })

    }
    })

    }

    2023-07-03 15:02

  • 1***@163.com (作者)

    就是自己封装的axios在uni-app中使用,调用接口的时候报这个错误,浏览器上都正常,但是在安卓模拟器上就报这个错误uni.getStorageSync is not dunction

    2023-07-03 15:05

唐家三少

唐家三少 - 我要写代码

要想问题有人理,代码示例不可少;

  • 1***@163.com (作者)

    就是自己封装的axios在uni-app中使用,调用接口的时候报这个错误,获取不到token,但是在浏览器上都正常,在安卓模拟器上就报这个错误uni.getStorageSync is not function,

    2023-07-03 15:06

  • 1***@163.com (作者)

    const tokenKey = 'token';


    // 存、取、删token

    export function setToken(token) {

    return uni.setStorageSync(tokenKey, token);

    };


    export function getToken() {

    return uni.getStorageSync(tokenKey);

    };

    export function removeToken() {

    return uni.removeStorageSync(tokenKey);

    }

    2023-07-03 15:07

该问题目前已经被锁定, 无法添加新回复