uni-app Error: [JS Framework] Failed to receiveTasks, instance (14) is not available.

发布于 1周前 作者 eggper 来自 Uni-App

uni-app Error: [JS Framework] Failed to receiveTasks, instance (14) is not available.
# 详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

重现步骤

nvue页面使用weex,使用input标签就开始报错
新建页面也不行。
18:01:11.922 Error: [JS Framework] Failed to receiveTasks, instance (14) is not available.
18:01:11.942 Error: [JS Framework] Failed to receiveTasks, instance (16) is not available.
18:01:11.963 Error: [JS Framework] Failed to receiveTasks, instance (18) is not available.
18:01:11.984 Error: [JS Framework] Failed to receiveTasks, instance (20) is not available.
而且是点一次出现很多个这个错误提示,出现上百条错误提示

附件

<template>  
    <div>  
        <scroller class="page" ref="list">  
            <!-- <messageChat v-for="(item,index) in contentList" :key="index" :item="item" v-on:sendContentToParent="appendSendContent"  
             :contentData="contentData"></messageChat> -->  
        </scroller>  
        <div class="btns" ref="btns">  
            <!-- <input type="text" return-key-type="send" ref="input" @keyboard="getKeyboard" @focus="getFocus()"  
             placeholder="input placeholder" class="input-sty"> -->  
             <input class="input-sty" />  
            <text class="send">发送</text>  
        </div>  
    </div>  
</template>  

<script>  
    const dom = weex.requireModule("dom");  
    //import messageChat from "@/components/chat/chat"  
    import {  
        formatTime  
    } from "@/common/public.js";  
    export default {  
        data() {  
            return {  
                //接受和发送的数据  
                page: 0,  
                to_uid: "",  
                to_head_img: "",  
                contentList: [],  
                //用户和对话用户资料  
                contentData: {  
                    "to_uid": "",  
                    "to_head_img": "null",  
                    "to_user_name": "",  
                }  
            }  
        },  
        created() {  
            uni.getStorage({  
                key: 'chatParams',  
                success: res => {  
                    let option = JSON.parse(res.data);  
                    uni.setNavigationBarTitle({  
                        title: option.to_user_name  
                    });  
                    //将父页面传值 的to_uid,to_head_img,to_user_name保存下来并传给组件进行渲染  
                    this.contentData.to_uid = option.to_uid;  
                    this.contentData.to_head_img = option.to_head_img;  
                    this.contentData.to_user_name = option.to_user_name;  
                    /* *  
                     * 获取历史聊天记录及标记已读  
                     * @param {Object} type:read 获取聊天记录  
                     * @param {Object} uid 当前用户的uid  
                     * @param {Object} to_uid 对话用户uid  
                     * @param {Object} tag 后端判断用户uid及对话用户uid  
                     * TODO:要根据后端接口修改  
                     */  
                    let params = {  
                        "type": "read",  
                        "uid": "155970241936805818",  
                        "to_uid": option.to_uid,  
                        "tag": option.tag,  
                        "page": this.page  
                    }  

                    uni.sendSocketMessage({  
                        data: JSON.stringify(params),  
                        success(ret) {},  
                        fail(ret) {  
                            console.log('WebSocket发送信息失败,请检查!错误原因:' + JSON.stringify(ret));  
                        }  
                    })  
                    /**  
                     * 监听WebSocket接受到服务器的消息事件。  
                     * @param {Object} ret  
                     * this.$store.commit("change_message_status", true);  
                     */  
                    uni.onSocketMessage(ret => {  
                        let getData = JSON.parse(ret.data);  
                        console.log(JSON.stringify(getData.data));  
                        console.log(getData.data.length);  
                        if (getData.data.length > 0) {  
                            getData.data = getData.data.reverse();  
                            for (let i in getData.data) {  
                                getData.data[i].created_time = formatTime(getData.data[i].created_time);  
                            }  
                            this.contentList = getData.data;  
                        }  
                    });  
                }  
            });  
        },  
        methods: {  
            //点击对话框外部分关闭软键盘  
            // closeKeyBoard: function() {  
            //  this.$refs.input.blur();  
            // },  
            // appendSendContent(data) {  
            //  this.contentList2.push(data);  
            // },  
            /* 页面滚动 */  
            // scrollAction: function() {  
            //  let el = this.$refs.btns;  
            //  dom.getComponentRect(this.$refs.list, res => {  
            //      dom.scrollToElement(el, {  
            //          offset: res.size.height  
            //      });  
            //  });  
            // },  
            // send: function() {  
            //  //this.scrollAction();  
            //  sendMessage(this.sendText, to_uid, content_type);  
            //  let sendParamsToParent = {  
            //      type: "send",  
            //      content_type: content_type,  
            //      content: this.sendText,  
            //      time: "2018年3月23日 XX:xx"  
            //  };  
            //  //将发送的数据传到父组件,并展示出来   
            //  this.$emit("sendContentToParent", sendParamsToParent);  
            //  //清楚对话框已发送的内容  
            //  this.sendText = "";  
            // },  
            /* 返回键盘信息 */  
            // getKeyboard: function(e) {  
            //  // this.listSty=`padding-bottom:${e.keyboardSize}px`;  
            //  // console.log(JSON.stringify(e))  
            // },  
            // getFocus: function() {  
            //  this.scrollAction();  
            // }  
        }  
        // ,  
        // components: {  
        //  messageChat  
        // }  
    }  
</script>  

<style>  
    .page {  
        background-color: #FFFFFF;  
        height: 100vh;  
    }  

    .btns {  
        position: fixed;  
        bottom: 0;  
        left: 0;  
        right: 0;  
        flex-direction: row;  
        border-top: 1px solid #eeeeee;  
        background-color: #fff;  
    }  

    .input-sty {  
        flex: 1;  
        padding: 20px 30px;  
        border-top-width: 1px;  
        border-bottom-width: 1px;  
        border-style: solid;  
        border-color: rgb(162, 217, 192);  
        placeholder-color: #41b883;  
        font-size: 28px;  
    }  

    .send {  
        border-style: solid;  
        border-color: rgb(162, 217, 192);  
        border-top-width: 1px;  
        border-bottom-width: 1px;  
        border-left-width: 1px;  
        padding: 20px 30px;  
        font-size: 28px;  
    }  
</style>

38 回复

最早2019年有人提这个问题,现在是2023年,3.8.4 版本 HBuilderX 跑真机,时不时还会出现:Error: [JS Framework] Failed to receiveTasks, instance (3) is not available. 哈哈哈,真的是服了。。。 我真的很无语,也真的很无奈


回复 i***@qq.com: 我也服

2024了 还是一样,从未19年接触就遇到了。好像说是热更新引起的。

遇到过一个,是因为代码里以混入方式加载了一个定时器,但是代码bug导致定时器没被clearInterval关闭,相当于无限加载定时器导致溢出,可以搜索一下setInterval,看你的有没有类似情况

我也遇到了同样的问题 请问题主解决了吗? 在苹果IOS下是没问题的 在安卓下总是出现这个问题

同问。你们解决了吗?

解决了吗?

对啊,安卓太不稳定了,老是出现这个问题

更新IDE版本,好像最新的版本已经处理了

回复 从入门到做保安: 更新什么IDE版本呀,新手没懂也遇到这个问题了

我使用最新版本的 也有问题 版本号是2.3.3.20190923

我的也是,然望解决 reportJSException >>>> exception function:callReportCrash, exception:weex core process crash and restart exception Error: [JS Framework] Failed to receiveTasks, instance (11) is not available. Error: [JS Framework] Failed to receiveTasks, instance (13) is not available. Error: [JS Framework] Using invalid instance id “11” when calling destroyInstance. Error: [JS Framework] Using invalid instance id “13” when calling destroyInstance.

楼上各位大佬你们有人解决吗?

有个屁,这些人干吃饭不干事

现在还有这个问题吗?我运行这段代码没有报错

大佬,我这个问题解决了,但是又有个新的问题,makePhoneCall 这个方法,在联机调试的时候运行正常,可是一但打包成apk的包,再装入手机上就不可以了,全部权限开启也不行

回复 关关雎鸠爱喝粥: 大佬 咋个解决的,请教一下 我也遇到同样的问题了Failed to receiveTasks, instance (20) is not available.

回复 维羊:我是只是在特定机型上碰到了这个问题,我就把代码一个方法一个方法的删除排查了下,最终发现是某个js方法影响导致这个问题,删除那个js就好用了(我出现错误的事一个中文排序的js,且只在华为手机上出现bug)

Error: [JS Framework] Failed to receiveTasks, instance (19) is not available.这个怎么搞啊!!!!!

我也报这个错,后来找到原因是进行的本地调试,域名是在/etc/hosts文件做的本地解析,ios虚拟机调试没有问题,android就报了这个错,可能android虚拟机不经过mac的hosts解析,后来改成公网IP就好了

怎么改成公网IP? mac怎么操作?

你好,我是在Android studio内出现的错误,我就两个页面来回点了几下就点不动了,就报了这个错误

我的也出现相同问题。用的是逍遥模拟器。经查后是模拟器没有连接网络的原因造成的。在模拟器的系统设置里面网络,重新生成WIFI热点就解决问题了。

Error: [JS Framework] Failed to receiveTasks, instance (4) is not available

解决了吗??大手子

Error: [JS Framework] Failed to receiveTasks, instance (1) is not available. 模拟器,无限报错。

检查代码或使用的组件中是否用到setInterval没有及时清除,可以在setInterval内打印到控制台一段文本,运行看下是不是一直在跑

2024年了这个问题还在,到底谁解决?

2024年了,问题依旧。

后天就2025年了,问题依旧。

25年了,还是没解决,狗逼uni

网络改成同一个就解决了。

针对您提到的 uni-app 错误信息 Error: [JS Framework] Failed to receiveTasks, instance (14) is not available,这通常表明在尝试与某个实例(如页面或组件)进行交互时,该实例已经不再可用或尚未正确初始化。这种问题可能由多种原因引起,比如实例被过早销毁、内存管理问题或者异步任务时序错误等。

下面我将提供一个简化的代码示例,并说明如何避免这类问题。虽然无法直接解决您的具体错误(因为具体情境未知),但可以提供一些常见的防御性编程实践和检查点。

代码示例

假设我们有一个页面 PageA,在其中我们尝试通过某种方式(如定时器)与页面内的组件进行交互:

// PageA.vue
<template>
  <view>
    <my-component ref="myComponent"></my-component>
  </view>
</template>

<script>
export default {
  mounted() {
    this.startInteraction();
  },
  methods: {
    startInteraction() {
      setTimeout(() => {
        // 检查组件实例是否存在
        if (this.$refs.myComponent) {
          this.$refs.myComponent.someMethod();
        } else {
          console.error('组件实例不可用');
        }
      }, 3000); // 假设3秒后尝试交互
    }
  }
}
</script>

防御性编程实践

  1. 检查实例存在性:在尝试访问组件或页面的方法或属性前,始终检查实例是否存在。
  2. 使用生命周期钩子:确保在正确的生命周期钩子中执行相关操作,避免在组件未完全挂载或已卸载时进行操作。
  3. 错误处理:添加适当的错误处理逻辑,以便在实例不可用或其他异常情况下能够优雅地处理错误。
  4. 避免不必要的异步操作:尽量简化异步逻辑,确保所有异步操作都在组件的有效生命周期内进行。
  5. 日志记录:在关键操作前后添加日志记录,有助于调试和定位问题。

总结

虽然上述代码示例并未直接解决您遇到的特定错误,但它展示了在进行组件间交互时的一些基本防御性编程策略。针对您的具体错误,可能需要检查以下几个方面:

  • 确保没有在页面或组件卸载后还试图访问其方法或属性。
  • 检查所有相关的异步逻辑,确保它们在组件的有效生命周期内执行。
  • 使用开发者工具的网络和控制台面板,查看是否有更多关于错误上下文的信息。

希望这些信息对您有所帮助!

回到顶部