D3.js: "Nicht erfasster Syntaxfehler: Unerwartetes Token ILLEGAL"?

77

Ich habe gerade D3.js von d3js.org heruntergeladen (Link zur Zip-Datei), es entpackt und auf der folgenden HTML-Seite darauf verwiesen:

<html>
<head>
<title>D3 Sandbox</title>
<style>
</head>
<body>
<script src="/d3.v3.js"></script>
</body>
</html>

Wenn ich diese Seite lade, gibt mir meine Konsole (in Chrome) den folgenden Fehler:

Uncaught SyntaxError: Unexpected token ILLEGAL: line 2

Die pi- und e-Symbole am Anfang der Datei gefallen nicht . Errrr ... was kann ich dagegen tun? Ich bediene die Datei mit Pythons SimpleHTTPServer.

Update: Ja, ich weiß, dass ich nur auf eine CDN-Version verlinken kann, aber ich würde es vorziehen, die Datei lokal bereitzustellen.

Richard
quelle
Das Problem für mich war, dass simplehttpserver utf8 standardmäßig nicht unterstützt: stackoverflow.com/questions/15288891/…
lewurm

Antworten:

136

Geben Sie den UTF-8-Zeichensatz im HTML-Hostdokument an:

<meta http-equiv="content-type" content="text/html; charset=UTF8">

D3 enthält UTF-8-Symbole (wie π), die in Nicht-UTF8-Dokumenten ungültig sind.

Laurent Jégou
quelle
5
<meta charset = "UTF8"> hat den Trick für mich gemacht, aus irgendeinem Grund hat die längere Version dies nicht getan. danke
Nitsan Baleli
5
Können Sie kommentieren, warum dies notwendig ist?
BBischof
3
BBischof: D3 enthält UTF-8-Symbole (wie π) Invaliden in Nicht-UTF8-Dokumenten
Laurent Jégou
1
Dies hilft nicht, wenn für den Benutzer die Einstellung "Ansicht"> "Codierung" in "Automatisch erkennen" in Chrome deaktiviert ist. Das Ausführen von uglify mit der Option --ascii-only ist zuverlässiger.
Nathan Bubna
1
Sie müssen UTF8 verwenden, weil D3 Sie ein Zeichen wie π (Pi): github.com/mbostock/d3/issues/1195
Nicolaï Van Lennepkade
6

Füge 'charset = "utf-8" hinzu'

<script src="/d3.v3.js" charset="utf-8"></script>
Hewsonismus
quelle
1
Obwohl es lahm ist, hilft dies nicht, wenn der Benutzer die Einstellung "Ansicht"> "Codierung" in "Automatisch erkennen" in Chrome deaktiviert hat. Das Ausführen von uglify mit der Option --ascii-only ist zuverlässiger.
Nathan Bubna
5

Ich habe versucht, den Zeichensatz im Dokument und im Skript-Tag selbst festzulegen, aber Chrome scheint das nicht zu interessieren. Ich bin mir nicht sicher, ob ich etwas falsch mache.

Ich habe Erfolg gehabt, indem ich es zuerst mit der Option --ascii-only durch uglify ausgeführt habe.

UPDATE: Es stellte sich heraus, dass meine Einstellung Ansicht-> Codierung in Chrome nicht auf Auto-Detect eingestellt war, sondern auf westliche Codierung. Ich weiß nicht warum, aber eine Änderung hat das Problem behoben. Es ist lächerlich, dass diese Einstellung eine Zeichensatz-Eigenschaft direkt auf dem Skript-Tag übertrumpfen würde. In Anbetracht der Tatsache, dass sich Benutzer möglicherweise in derselben Situation befinden und nicht in der Lage sind, dies herauszufinden, werde ich uglify weiterhin verwenden, um den Erfolg sicherzustellen.

Nathan Bubna
quelle
hatte das gleiche Problem. Das Ändern der Codierungseinstellung zur automatischen Erkennung hat das Problem behoben
Andrew Staroscik
0

Überprüfen Sie, ob zwischen all Ihren Zeichenfolgenverkettungen ein Pluszeichen steht. Andernfalls wird dieser Fehler generiert.

userFog
quelle