Ankündigung

Einklappen
Keine Ankündigung bisher.

Am Ende der Datei: SyntaxError: illegal character

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Am Ende der Datei: SyntaxError: illegal character

    Guten Abend,

    ich steh etwas auf dem Schlauch und meine Googlesuche nach dem Fehler hat mich leider auch nicht weitergebracht.

    Ich versuche eine Javascript Datei über local über den Webserver (nginx) aufzurufen, mir werden aber immer illegale Zeichen ans Ende gehangen.
    Code:
     function test(input) {     console.log(input); }�������
    Stell ich von LF auf CRLF siehts so aus:

    Code:
     function test(input) {     console.log(input); }�����������������������
    Ich schätze ich mache hier irgendwas grundlegend falsch, hat da jemand vielleicht einen Tipp wo es hier hakt?

    edit: mal noch ergänzend, das Dokument ist als UTF-8 gespeichert, aber auch eine Änderung auf ISO-8859-1 ändert nichts an der Ausgabe.

  • #2
    Was sagt denn der Hex Editor, was das für Zeichen sind?

    Kommentar


    • #3
      Hex Editor zeit mir meine } als letztes Zeichen (7D). Das Problem scheint nur via Firefox aufzutauchen, im Chrome wird mir die Datei ganz normal angezeigt.
      Kurzfristig löst das mein Problem also, falls jemand Ideen hat was da falsch läuft bin ich trotzdem dankbar für Ratschläge.

      Kommentar


      • #4
        Da mein Firefox sowas nicht macht, tippe ich auf ein Problem Nginx+FF.

        Wegen HexEditor ... kannst du da auch die Datei anschauen/dumpen, wie sie im FF ankommt? vielleicht geben die Dev Tools im FF noch Hinweise.

        Kommentar


        • #5
          Leider doch nicht.
          Nach kleinen Änderungen in der Datei (z.B. der Umbenennung einer Funktion) ist nun auch Chrome nichtmehr bereit mir die Datei 'normal' anzuzeigen.

          edit: Firefox macht exakt das gleiche wie Chrome.

          Während Firefox hinten was dran hängt, schneidet Chrome hinten was ab und scheint hier irgendwie eine "alte" Variante der Datei zu laden:

          Code:
           function test(input) {     console.log(i
          Während das hier in der Datei steht:
          Code:
          function test() {     console.log("Test"); }
          Am Cache kann es eigentlich nicht liegen, die Developer Tools sind offen und Chrome sollte kein Cache anlegen und außerdem verändert sich die Datei auch, nehme ich beispielsweise aufm Dateisystem die schließende } raus verschwindet auch beim Chrome das letzte Zeichen (das "i").


          Immerhin zeigt mir Firefox inzwischen eine hilfreiche Fehlermeldung an, wenn ich die Javascript Datei direkt aufrufe.
          Die Zeichenkodierung des Reintext-Dokuments wurde nicht deklariert. Das Dokument wird in manchen Browser-Konfigurationen mit verstümmeltem Text dargestellt, wenn das Dokument Zeichen außerhalb des US-ASCII-Bereichs enthält. Die Zeichenkodierung der Seite muss im Transferprotokoll deklariert werden oder die Datei muss eine Byte-Order-Markierung als Kodierungssignatur verwenden.

          Kommentar


          • #6
            Schau auch mal nach dem Content-Length-Header, vielleicht schneidet der was ab, wenn er zu kurz deklariert ist ...

            Kommentar


            • #7
              Zitat von Dormilich Beitrag anzeigen
              Da mein Firefox sowas nicht macht, tippe ich auf ein Problem Nginx+FF.

              Wegen HexEditor ... kannst du da auch die Datei anschauen/dumpen, wie sie im FF ankommt? vielleicht geben die Dev Tools im FF noch Hinweise.
              Da kommen für die schwarzen Fragezeichen '00'en raus.

              Nach einem Blick in den HTTP Request, muss ich dir Browser hier in Schutz nehmen - die zeigen einfach nur an was ihnen zugeschickt wird, das Problem scheint also schon vorher zu entstehen.

              Kommentar


              • #8
                Zitat von ChromOxid Beitrag anzeigen
                Da kommen für die schwarzen Fragezeichen '00'en raus.
                Hm, sieht aus wie NUL-Bytes. Anscheinend versucht der Nginx auf eine bestimmte (welche auch immer) Länge Padding aufzufüllen.

                Kommentar


                • #9
                  Mal noch der Vollständigkeit wegen, der Request Header:

                  Code:
                  Host: localhost
                  User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
                  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
                  Accept-Language: de,en-US;q=0.7,en;q=0.3
                  Accept-Encoding: gzip, deflate
                  DNT: 1
                  Connection: keep-alive
                  Upgrade-Insecure-Requests: 1
                  Pragma: no-cache
                  Cache-Control: no-cache
                  und der Response Header:
                  Code:
                  Server: nginx/1.13.0
                  Date: Tue, 16 May 2017 12:25:33 GMT
                  Content-Type: application/javascript
                  Content-Length: 457
                  Last-Modified: Tue, 16 May 2017 12:23:50 GMT
                  Connection: keep-alive
                  Etag: "591aef56-1c9"
                  Accept-Ranges: bytes

                  Kommentar


                  • #10
                    Wenn im HTTP Header keine Zeichenkodierung mitgegeben wird, dann müssen die Browser raten, welche Kodierung da in Frage kommt.

                    mit
                    PHP-Code:
                      header('Content-Type: text/html; charset=utf-8'); 
                    vor jeglicher Ausgabe kannst du somit mitteilen das UTF8 verwendet werden soll.

                    Kommentar


                    • #11
                      Obwohl das bei JS-Dateien der Nginx erledigen muss ...

                      Kommentar


                      • #12
                        Ja schon, aber da scheint wohl eine Einstellung nicht gemacht worden zu sein.
                        Anleitung: https://www.cyberciti.biz/faq/nginx-...-charset-utf8/

                        Kommentar


                        • #13
                          Zitat von protestix Beitrag anzeigen
                          Wenn im HTTP Header keine Zeichenkodierung mitgegeben wird, dann müssen die Browser raten, welche Kodierung da in Frage kommt.

                          mit
                          PHP-Code:
                           header('Content-Type: text/html; charset=utf-8'); 
                          vor jeglicher Ausgabe kannst du somit mitteilen das UTF8 verwendet werden soll.
                          Ist das üblich in reinen Javascript Dateien? hab das in der Form glaube ich noch nie gesehen.
                          Der Praxistest zeigt mir den gleichen Dateiinhalt mit bedeutend mehr 00en am Ende, geschätz die Zeichenanzahl von
                          Code:
                           
                           header('Content-Type: text/html; charset=utf-8');
                          mehr.

                          Ich vermute Dormilich hatte in #8 hier die richtige Idee. Mir scheint es, als ob nginx eine gecachte Version der Datei vorhält und bei einer Änderung am Original weiterhin die gecachte Datei ausliefert, aber auf die Größe der neuen (geänderten) Datei auffüllt, bzw. abschneidet.

                          Kommentar


                          • #14
                            Zitat von protestix Beitrag anzeigen
                            Ja schon, aber da scheint wohl eine Einstellung nicht gemacht worden zu sein.
                            Anleitung: https://www.cyberciti.biz/faq/nginx-...-charset-utf8/
                            Gelöst.
                            Ich habe in der nginx.conf
                            Code:
                            sendfile=on;
                            auskommentiert und dann gleichzeitig mal noch charset=utf-8; gesetzt, damit funktionierts nun einwandfrei.

                            Danke euch beiden für die Ratschläge.

                            Kommentar


                            • #15
                              Gern geschehen.

                              Kommentar

                              Lädt...
                              X