__zone_symbol__currentTask错误

7 javascript promise typescript ionic-framework angular

我收到一个错误:

{ "__zone_symbol_currentTask":{ "类型": "microTask", "状态": "notScheduled", "源": "Promise.then", "区": "角度", "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
    });
  }
Run Code Online (Sandbox Code Playgroud)

你能告诉我为什么会这样,以及如何解决它?我很感激任何答案!

Jon*_* B. 18

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

缺少错误信息的原因

您遇到的潜在问题被两个事实隐藏:

  1. __zone_symbol_currentTask是Angular插入到Error对象中的属性.
  2. JSON.stringify不输出Error对象自己的属性(默认情况下)

因此,您在JSONified输出中看到的唯一错误属性是Angular引入的奇怪的属性.

解决方法

要记录基础错误详细信息,您可以尝试以下操作:

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

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

delete error.__zone_symbol__currentTask

另请参阅:是否无法使用JSON.stringify对错误进行字符串化?