/ / CoffeeScript-Parser-Fehler - Unerwartetes "(" - Aber es gibt kein "(") im Code - Kaffeescript

CoffeeScript parse error - Unerwartete "(" - "Aber" "gibt es im code - coffeescript nicht

Hier ist der Originalcode:

res.write JSON.stringify {"#{result.statusCode}": "OK"}

und hier ist der Fehler, den sowohl der CoffeeScript-Interpreter in SublimeText 2 als auch der Interpreter "Try CoffeeScript" auf der CoffeeScript-Site geben:

PARSE ERROR ON LINE 1: UNEXPECTED "("

Offensichtlich gibt es keine offenen Parens im Code, daher verstehe ich den Fehler nicht. Ist es ein Fehler im CoffeeScript-Parser?

Die kleinste Codezeile, die dies tut, scheint ungefähr so ​​zu sein:

{"#{a}": ""}

Ich gehe davon aus, dass die Zeichenketteninterpolation im Objektschlüssel gültig ist, aber ich weiß es nicht genau.

BEARBEITEN: Nach einigen Untersuchungen scheint es nicht zulässig zu sein, die Zeichenfolgeninterpolation im Schlüssel auszuführen, da das resultierende JavaScript ungültig wäre.

Dies:

{"#{a}": "stuff}

würde zu etwas übersetzen:

{ "" + a: "stuff"}

was nicht gültig ist.

Aber kann jemand erklären, warum die Fehlermeldung, die es mir gibt, so falsch ist?

Antworten:

3 für die Antwort № 1

Ich gehe davon aus, dass die Zeichenketteninterpolation im Objektschlüssel gültig ist, aber ich weiß es nicht genau.

Leider ist es nicht so.

Sie müssen so etwas tun

(json = {})[result.statusCode] = "OK"
res.write JSON.stringify json

oder wenn Sie einen Einzeiler wünschen

res.write (-> ((json = {})[result.statusCode] = "OK") and JSON.stringify json)()

Was den irreführenden Fehler anbelangt, versucht CoffeeScript, Ihre {"#{a}": ""} in {("" + a): ""} Welches ist kein gültiges JavaScript. CoffeeScript wirft den Fehler bei diesem linken Elternteil.