Ich versuche, eine Site in ReactJS zu erstellen. Als ich jedoch versuchte, mein JS in eine separate Datei zu stellen, wurde der folgende Fehler angezeigt: "Nicht erfasster Syntaxfehler: Unerwartetes Token <".
Ich habe versucht /** @jsx React.DOM */
, oben in die JS-Datei einzufügen, aber es wurde nichts behoben. Unten finden Sie die HTML- und JS-Dateien. Irgendwelche Ideen, was falsch läuft?
HTML
<html>
<head>
<title>Page</title>
<script src="http://fb.me/react-0.12.2.js"></script>
<script src="http://fb.me/JSXTransformer-0.12.2.js"></script>
<script src="http://code.jquery.com/jquery-1.10.0.min.js"> </script>
<script src="./lander.js"> </script>
</head>
<body>
<div id="content"></div>
<script type="text/jsx">
React.render(
<Lander />,
document.getElementById('content')
);
</script>
</body>
</html>
JS
/**
* @jsx React.DOM
*/
var Lander = React.createClass({
render: function () {
var info = "Lorem ipsum dolor sit amet... ";
return(
<div>
<div className="info">{info}</div>
</div>
);
}
});
BEARBEITEN: Ich habe festgestellt, dass ich type="text/jsx"
dem Skript-Tag, das meinen Lander-Code enthält , etwas hinzufügen muss . Nachdem ich dies hinzugefügt und neu geladen habe, erhalte ich diese Warnung
"Sie verwenden den JSX-Transformator im Browser. Stellen Sie sicher, dass Sie JSX für die Produktion vorkompilieren - http://facebook.github.io/react/docs/tooling-integration.html#jsx "
gefolgt von diesem Fehler:
"XMLHttpRequest kann die Datei: ///Users/.../lander.js nicht laden. Ursprungsübergreifende Anforderungen werden nur für Protokollschemata unterstützt: http, data, chrome-extension, https, chrome-extension-resource."
Es scheint, dass ich noch etwas tun muss, damit der Browser jsx transform funktioniert, aber ich bin mir nicht sicher, was es ist.
EDIT: OOOOH muss ich es mit MAMP oder so hosten?
type="text/babel"
zu dem Skript-Tag, in das ich meine JS-Datei importiere, und das Babel-Skript, das @Steven im obigen Kommentar erwähnt hat, hat für mich funktioniert.Antworten:
UPDATE - Verwenden Sie stattdessen Folgendes:
Fügen Sie
type="text/jsx"
als Attribut desscript
Tags hinzu, das zum Einschließen der JavaScript-Datei verwendet wird, die von JSX Transformer wie folgt transformiert werden muss:Anschließend können Sie MAMP oder einen anderen Dienst verwenden, um die Seite auf localhost zu hosten, sodass alle Einschlüsse funktionieren, wie hier beschrieben .
Vielen Dank für all die Hilfe an alle!
quelle
python -m SimpleHTTPServer 8080
wird häufig verwendet, da Sie keinen persistenten Server wie Apache installieren, ausführen und konfigurieren müssen.text/jsx
Attributwert hinzugefügtJSTransform ist veraltet . Verwenden Sie stattdessen babel.
quelle
Fügen Sie
type="text/babel"
als Attribut des Skript-Tags Folgendes hinzu:quelle
Fügen Sie
type="text/babel"
dem Skript, das die JSX-Datei enthält, Folgendes hinzu und fügen Sie Folgendes hinzu:<script src="https://npmcdn.com/[email protected]/browser.min.js"></script>
quelle
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
wie hier erwähntWenn Sie so etwas haben
Sie haben wahrscheinlich an einem Ort wie diesem ein Komma verpasst:
quelle
Der Code, den Sie haben, ist korrekt. JSX-Code muss zu JS kompiliert werden:
http://facebook.github.io/react/jsx-compiler.html
quelle
+
... aktualisieren. Aktualisiert sollte jetzt funktionieren.Wenn Sie einen Fehler wie diesen erhalten:
Möglicherweise fehlt Ihnen eine geschweifte Klammer
quelle
Versuchen Sie es mit einem Webpack, es hat das ähnliche Problem in meinem Projekt gelöst. Speziell der Teil "Presets".
quelle
Ich habe das gleiche Problem mit Ihnen und ich habe etwas auf meinem Server geändert
Sie könnten dies versuchen
quelle