Estoy tratando de comenzar a construir un sitio en ReactJS. Sin embargo, cuando traté de poner mi JS en un archivo separado, comencé a recibir este error: "Error de sintaxis no detectado: token inesperado <".
Intenté agregar /** @jsx React.DOM */
a la parte superior del archivo JS, pero no solucionó nada. A continuación se muestran los archivos HTML y JS. ¿Alguna idea de lo que va mal?
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>
);
}
});
EDITAR: Me di cuenta de que necesito agregar type="text/jsx"
a la etiqueta de script que incluye mi código de aterrizaje. Sin embargo, después de agregar esto y recargar, recibo esta advertencia
"Está utilizando el transformador JSX en el navegador. Asegúrese de precompilar su JSX para la producción: http://facebook.github.io/react/docs/tooling-integration.html#jsx "
seguido de este error:
"XMLHttpRequest no puede cargar el archivo: ///Users/.../lander.js. Las solicitudes de origen cruzado solo se admiten para esquemas de protocolo: http, data, chrome-extension, https, chrome-extension-resource".
parece que hay algo más que debo hacer para que funcione la transformación jsx del navegador, pero no estoy seguro de qué es.
EDITAR: OOOOH ¿necesito alojarlo usando MAMP o algo así?
type="text/babel"
a la etiqueta de script donde estoy importando mi archivo JS y el script de Babel que @Steven mencionó en el comentario anterior funcionó para mí.Respuestas:
ACTUALIZAR - use esto en su lugar:
Agregue
type="text/jsx"
como atributo de lascript
etiqueta utilizada para incluir el archivo JavaScript que debe ser transformado por JSX Transformer, así:Luego, puede usar MAMP o algún otro servicio para alojar la página en localhost para que todas las inclusiones funcionen, como se explica aquí .
¡Gracias a todos por la ayuda!
fuente
python -m SimpleHTTPServer 8080
se usa comúnmente porque no es necesario instalar, ejecutar y configurar un servidor persistente como apache.text/jsx
valor del atributoJSTransform está obsoleto , utilice babel en su lugar.
fuente
Agregue
type="text/babel"
como un atributo de la etiqueta de secuencia de comandos, así:fuente
Agregue
type="text/babel"
al script que incluye el archivo .jsx y agregue esto:<script src="https://npmcdn.com/[email protected]/browser.min.js"></script>
fuente
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
como se menciona aquíSi tienes algo como
Probablemente te perdiste una coma en un lugar como este:
fuente
El código que tienes es correcto. El código JSX debe compilarse en JS:
http://facebook.github.io/react/jsx-compiler.html
fuente
+
... actualizado debería funcionar ahora.Si recibe un error como este:
Podría ser que te falte un corchete
fuente
Intente agregar un paquete web, resolvió un problema similar en mi proyecto. Especialmente la parte de "presets".
fuente
Tengo el mismo problema contigo y he cambiado algo en mi servidor
podrías intentar esto
fuente