Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Error: Cannot read properties of undefined abfangen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Error: Cannot read properties of undefined abfangen

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      Farmer-cb last edited by Farmer-cb

      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 eingebaut

      ist 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 abfrage

      nfg Christian

      J 1 Reply Last reply Reply Quote 0
      • J
        Jaksa @Farmer-cb last edited by Jaksa

        @farmer-cb

        Ä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 🙂

        F 1 Reply Last reply Reply Quote 0
        • F
          Farmer-cb @Jaksa last edited by Farmer-cb

          @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ändnis

          request(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

          J 1 Reply Last reply Reply Quote 0
          • J
            Jaksa @Farmer-cb last edited by Jaksa

            @farmer-cb

            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.

            F 1 Reply Last reply Reply Quote 0
            • F
              Farmer-cb @Jaksa last edited by

              @jaksa
              habs getestet und muss dir leider mitteilen DAS DU VOLLKOMMEN RECHT HAST 😖

              da 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

              J 1 Reply Last reply Reply Quote 0
              • J
                Jaksa @Farmer-cb last edited by

                @farmer-cb

                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 😄

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                960
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                javascript
                2
                6
                478
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo