seho20001123
seho20001123
  • 发布:2021-05-03 23:19
  • 更新:2021-05-04 21:49
  • 阅读:538

【报Bug】Vue3小程序Promise请求报错u找不到

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

第三方开发者工具版本号: 最新

基础库版本号: 2.16.1

项目创建方式: CLI

CLI版本号: 2.0.0-alpha-31520210315001

操作步骤:
  1. 打开对应版本的vue3项目+ts
  2. 尝试去构建一个请求,promise

预期结果:

正确请求到数据无报错

实际结果:

报错:TypeError: u is not a function

bug描述:

后端是云函数
报错:TypeError: u is not a function
例子:
export async function getQuestionAreaList(): Promise<ActionResult> {
// 获取题目专区列表
return new Promise((resolve) => {
db.collection("questionArea")
.where("deleteDate == ''")
.get()
.then((res) => {
const { success, result } = res;
resolve({
success,
data: result.data,
});
})
.catch((err: { message: string }) => {
console.log(err);
uni.showToast({
title: err.message,
icon: "none",
});
});
});
}

这个方法走了catch,打印了err
根据源码位置,找到了如下线索:
return {
PLATFORM: "mp-weixin",
OS: d,
APPID: h.appid,
LOCALE: u(),
DEVICEID: e,
CLIENT_SDK_VERSION: "1.0.0"
};
uniapp源代码中的这一句出现了问题:u()应该找不到

2021-05-03 23:19 负责人:无 分享
已邀请:
seho20001123

seho20001123 (作者) - 菜鸟一个

加我微信 npm_install_s

seho20001123

seho20001123 (作者) - 菜鸟一个

调用云函数出现的这个问题,我分析了一下源码;
vendor.js:

    a = _e2.t,  
    c = _e2.setLocale,  
    u = _e2.getLocale;  
console.log(u); // 此时u是undefined,对象合并出现了问题

var _e2 = Object(_dcloudio_uni_i18n__WEBPACK_IMPORTED_MODULE_1__["initVueI18n"])({
"zh-Hans": {
"uniCloud.init.paramRequired": "缺少参数:{param}",
"uniCloud.uploadFile.fileError": "filePath应为File对象"
},
"zh-Hant": {
"uniCloud.init.paramRequired": "缺少参数:{param}",
"uniCloud.uploadFile.fileError": "filePath应为File对象"
},
en: {
"uniCloud.init.paramRequired": "{param} required",
"uniCloud.uploadFile.fileError": "filePath should be instance of File"
},
fr: {
"uniCloud.init.paramRequired": "{param} required",
"uniCloud.uploadFile.fileError": "filePath should be instance of File"
},
es: {
"uniCloud.init.paramRequired": "{param} required",
"uniCloud.uploadFile.fileError": "filePath should be instance of File"
}
}, "zh-Hans"),
a = _e2.t,
c = _e2.setLocale,
u = _e2.getLocale;

seho20001123

seho20001123 (作者) - 菜鸟一个

initVueI18n这个函数没有返回get方法;

    return {  
        t(key, values) {  
            return t(key, values);  
        },  
        setLocale(newLocale) {  
            return i18n.setLocale(newLocale);  
        },  
        mixin: {  
            beforeCreate() {  
                const unwatch = i18n.watchLocale(() => {  
                    this.$forceUpdate();  
                });  
                this.$once('hook:beforeDestroy', function () {  
                    unwatch();  
                });  
            },  
            methods: {  
                $$t(key, values) {  
                    return t(key, values);  
                },  
            },  
        },  
    };
seho20001123

seho20001123 (作者) - 菜鸟一个

已解决,升级了@dcloudio/uni-i18n

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