__zone_symbol__currentTask 错误

Posted

技术标签:

【中文标题】__zone_symbol__currentTask 错误【英文标题】:__zone_symbol__currentTask Error 【发布时间】:2018-02-04 21:41:50 【问题描述】:

我得到一个错误:

"__zone_symbol_currentTask":"type":"microTask","state":"notScheduled","source":"Promise.then","zone":"angular","cancelFn":null," runCount":0

这就是代码:

async getNewData(id: number, path: string, howMany: number) 
    let fileManagement: FileManagement = new FileManagement();
    let result: any = null;
    switch (id) 
        case 0:
            alert("pfad: " + path);
            await fileManagement.readFile(path + "Tasks/", "task_" + howMany + ".tsk").then((text) => 
                alert("text: " + text);
                result = JSON.parse(text);
                alert("ganz fertig");
            ).catch((error)=>
                alert("nein, error: " + JSON.stringify(error));
            );
        default:
            result = JSON.parse(this.getDataFromComponent(id, howMany, path));
        //wenn komponenten aufgerufen werden sollen zum generieren
    
    return result;

constructor(public navCtrl: NavController, private tts: TextToSpeech, navParams: NavParams) 
    this.path = navParams.get('path'); //PFAD DES ÜBUNGSORDNERS HIER ÜBERGEBEN
    this.newData.getNewData(0, this.path, this.fileCounter).then((data) => 
      this.buffer = data;
      this.fileCounter++;
      this.nextChoice(0);
    ).catch((error) => 
      alert(JSON.stringify(error)); //here the error is thrown
    );
  

您能否告诉我这是为什么以及如何解决?我将不胜感激任何答案!

【问题讨论】:

尽量不要在错误对象上使用JSON.stringify。而是提醒error.toString()error.messageerror.stack 抛出的错误是一个 JSON 对象。没有 .message 属性,也没有 .stack 属性。并且 toString() 返回“[object]” 【参考方案1】:

我应该注意到,任何人都不太可能看到此代码中的原始错误,因为它部分依赖于外部依赖项。相反,此“答案”试图为您提供一种方法来确定您收到不完整错误消息的原因以及如何识别实际错误消息。希望对您有所帮助!

错误信息丢失的原因

您遇到的根本问题被两个事实所掩盖:

    __zone_symbol_currentTask 是 Angular 插入到 Error 对象中的一个属性。 JSON.stringify 不输出 Error 对象自身的属性(默认)

因此,您在 JSON 化输出中看到的唯一错误属性是 Angular 引入的那个看起来很奇怪的属性。

解决方法

要记录您的潜在错误详细信息,您可以尝试以下操作:

JSON.stringify(err, Object.getOwnPropertyNames(err))

虽然通常不建议这样做,但如果 Angular 插入的属性真的让你感到困扰,你可以删除它:

delete error.__zone_symbol__currentTask

另请参阅:Is it not possible to stringify an Error using JSON.stringify?

【讨论】:

以上是关于__zone_symbol__currentTask 错误的主要内容,如果未能解决你的问题,请参考以下文章

以字符串形式获取离子存储项目[重复]

英语高手请进

简易先进先出队列-自用

函数参数

多重背包

合租房合同模板