NEWS
[gelöst] Error: Cannot read properties of undefined abfangen
-
Hallo
habe ein Script, welche per request eine API (Ultimaker 3) abfragt und ein Json erhält.Die Abfrage an sich funktioniert, ich bekomme Daten zurück.
[ { "id": 954, "uuid": "99496274-a9f4-431e-9fc3-8287c0fe2861", "name": "UM3_Batterie_Halter_2_2021-11-03_08_31_32", "owner": "Buechner", "created_at": "2023-10-30T12:56:18.596537", "deleted_at": "2023-10-30T12:57:16.342311", "status": "queued", "job_material_1_guid": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", "job_printcore_1": "AA 0.4", "job_material_amount_1": 38909, "job_material_2_guid": null, "job_printcore_2": null, "job_material_amount_2": null, "job_buildplate": "glass", "estimated_time_total": 13780, "force": false, "machine_variant": "Ultimaker 3", "printer_uuid": "", "time_total": null, "print_start_time": null, "print_end_time": null, "printer_material_1_guid": null, "printer_printcore_1": null, "printer_material_2_guid": null, "printer_printcore_2": null, "printer_buildplate": "glass", "compatible_machine_families": "", "require_printer_name": "", "cloud_job_id": null }, { "id": 955, "uuid": "4c9c40bf-7df9-4747-b64c-b8128dd91962", "name": "UM3_Batterie_Halter_2_2021-11-03_08_31_32", "owner": "Buechner", "created_at": "2023-10-30T13:01:41.003291", "deleted_at": "2023-10-30T13:09:15.273831", "status": "aborted", "job_material_1_guid": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", "job_printcore_1": "AA 0.8", "job_material_amount_1": 0, "job_material_2_guid": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", "job_printcore_2": "AA 0.4", "job_material_amount_2": 38909, "job_buildplate": "glass", "estimated_time_total": 13787, "force": false, "machine_variant": "Ultimaker 3", "printer_uuid": "be15f44e-a9aa-4cd5-908f-bdc869f2ca7f", "time_total": 286, "print_start_time": "2023-10-30T13:01:42.749989", "print_end_time": "2023-10-30T13:06:28.811234", "printer_material_1_guid": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", "printer_printcore_1": "AA 0.8", "printer_material_2_guid": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", "printer_printcore_2": "AA 0.4", "printer_buildplate": "glass", "compatible_machine_families": "", "require_printer_name": "", "cloud_job_id": null }, { "id": 956, "uuid": "fadb4f30-0ce2-4a03-a31b-95bf6ef85edf", "name": "UM3_Batterie_Halter_2_2021-11-03_08_31_32", "owner": "Buechner", "created_at": "2023-10-30T13:08:54.228739", "deleted_at": "2023-10-31T05:15:45.773095", "status": "aborted", "job_material_1_guid": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", "job_printcore_1": "AA 0.8", "job_material_amount_1": 0, "job_material_2_guid": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", "job_printcore_2": "AA 0.4", "job_material_amount_2": 38909, "job_buildplate": "glass", "estimated_time_total": 13787, "force": false, "machine_variant": "Ultimaker 3", "printer_uuid": "be15f44e-a9aa-4cd5-908f-bdc869f2ca7f", "time_total": 154, "print_start_time": "2023-10-30T13:09:16.254341", "print_end_time": "2023-10-30T13:11:50.544407", "printer_material_1_guid": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", "printer_printcore_1": "AA 0.8", "printer_material_2_guid": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", "printer_printcore_2": "AA 0.4", "printer_buildplate": "glass", "compatible_machine_families": "", "require_printer_name": "", "cloud_job_id": null } ]
Jetzt will ich nur die Array's auslesen bei denen "printer_uuid" nicht leer ist
hab dazu ganz simpel eine If-abfrage in meine For-schleife eingebautist nur ein teil der Abfrage: for (let i=0;i<=array_laenge;i++) { if (werte[i].printer_uuid!='') { LOG(printer_uuid); } };
diese Abfrage funktioniert zwar aber bringt mir jetzt ein error zurück:
Error in request callback: TypeError: Cannot read properties of undefined
wie kann ich diese Fehlermeldung abfragenfg Christian
-
Änder die for Schleife in:
for (let i=0;i<array_laenge;i++)
Edit: Zum Hintergrund.
Wenn du 1 Ergebnis im Array hast würde die Schleife einmal mit "0" und einmal mit "1" laufen weil du in deiner Programmierung sagst das i auch gleich der array Länge sein darf.
werte[0] gibt es in dem Fall aber werte[1] halt nicht mehr.Sorry bin kein großartiger Erklärbär ich hoffe du verstehst wo der Fehler liegt
-
@jaksa
kann ich machen, hat aber leider mit meinen eigentlichen Problem nix zu tun
Wie man in der Beschreibung sieht, bekomme ich ja Array 0-3 zurück (id 954,955,956)
vielleicht hilft das zum verständnisrequest(urlpfad, function(error, response, body) { //log('FehlerNr: '+body.error_code) if (error) { log('auf Fehler reagieren'); } else { var werte=JSON.parse(body); let array_laenge=werte.length; for (let i=0;i<array_laenge;i++) { if (werte[i].printer_uuid!='') { LOG(printer_uuid); } };
mfg
Christian -
Genau da ist ja das Problem. Du hast nicht Array 0-3 sondern nur Array 0-2... [0] ist schon der erste, [1] der zweite und [2] der dritte.
Und du läufst danach noch über [3] den es nicht gibt weil das der vierte wäre.
Edit:
i(0) <= 0 ist true (id 954)
i(1) <= 1 ist true (id 955)
i(2) <= 2 ist true (id 956)
i(3) <= 3 ist true (id gibt es nicht Ergebnis ist dann: Error in request callback: TypeError: Cannot read properties of undefined)Wenn du das "=" weg nimmst ist das letzte false und somit stimmt deine Schleife dann auch mit den 3 Einträgen.
-
@jaksa
habs getestet und muss dir leider mitteilen DAS DU VOLLKOMMEN RECHT HASTda bin ich doch total auf dem falschen pfad gewesen
, dachte immer ich müsste den irgenwie abfangen , danke für den wink mit dem Zaunpfahl
DANKE
-
Super das es jetzt läuft. Gerne
Ich hoffe du verstehst wo dein Denkfehler ist/war. Ist der absolute "Klassiker" wenn man noch nicht so viel programmiert hat.
Den Fehler macht man ein mal und evtl. ein zweites mal danach hat man es meist verinnerlicht. Da muss nur ein mal der Groschen fallen