J'essaie de commencer à créer un site dans ReactJS. Cependant, lorsque j'ai essayé de mettre mon JS dans un fichier séparé, j'ai commencé à obtenir cette erreur: "Uncaught SyntaxError: Uncaught token <".
J'ai essayé d'ajouter /** @jsx React.DOM */
en haut du fichier JS, mais cela n'a rien corrigé. Voici les fichiers HTML et JS. Des idées sur ce qui ne va pas?
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>
);
}
});
EDIT: J'ai réalisé que je devais ajouter type="text/jsx"
à la balise de script qui comprend mon code d'atterrisseur. Cependant, après avoir ajouté ceci et rechargé, j'obtiens cet avertissement
"Vous utilisez le transformateur JSX intégré au navigateur. Veillez à précompiler votre JSX pour la production - http://facebook.github.io/react/docs/tooling-integration.html#jsx "
suivi de cette erreur:
"XMLHttpRequest ne peut pas charger le fichier: ///Users/.../lander.js. Les requêtes d'origine croisée ne sont prises en charge que pour les schémas de protocole: http, données, chrome-extension, https, chrome-extension-resource."
il semble qu'il y ait autre chose que je dois faire pour que la transformation jsx du navigateur fonctionne, mais je ne suis pas sûr de ce que c'est.
EDIT: OOOOH dois-je l'héberger en utilisant MAMP ou quelque chose?
type="text/babel"
à la balise de script où j'importe mon fichier JS et le script Babel que @Steven a mentionné dans le commentaire ci-dessus a fonctionné pour moi.Réponses:
MISE À JOUR - utilisez ceci à la place:
Ajouter
type="text/jsx"
comme attribut de lascript
balise utilisée pour inclure le fichier JavaScript qui doit être transformé par JSX Transformer, comme ça:Ensuite, vous pouvez utiliser MAMP ou un autre service pour héberger la page sur localhost afin que toutes les inclusions fonctionnent, comme indiqué ici .
Merci pour toute l'aide à tous!
la source
python -m SimpleHTTPServer 8080
est couramment utilisé car vous n'avez pas besoin d'installer, d'exécuter et de configurer un serveur persistant tel qu'apache.text/jsx
valeur d'attributJSTransform est obsolète , veuillez utiliser babel à la place.
la source
Ajoutez
type="text/babel"
comme attribut de la balise de script, comme ceci:la source
Ajoutez
type="text/babel"
au script qui inclut le fichier .jsx et ajoutez ceci:<script src="https://npmcdn.com/[email protected]/browser.min.js"></script>
la source
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
comme mentionné iciSi vous avez quelque chose comme
Vous avez probablement manqué une virgule dans un endroit comme celui-ci:
la source
Le code que vous avez est correct. Le code JSX doit être compilé en JS:
http://facebook.github.io/react/jsx-compiler.html
la source
+
... mis à jour devrait fonctionner maintenant.Si vous obtenez une erreur comme celle-ci:
Il se peut que vous manquiez une parenthèse bouclée
la source
Essayez d'ajouter Webpack, cela a résolu le problème similaire dans mon projet. Surtout la partie "presets".
la source
J'ai le même problème avec vous et j'ai changé quelque chose dans mon serveur
tu pourrais essayer ça
la source