2015-03-09 8 views
5

Gram z Reactem i napotkałem problem z kompilatorem offline JSX.Wyjście kompilatora JSX jest nieprawidłowe JavaScript

Oto mój kod JSX w pliku o nazwie helloworld.js, umieszczone w folderze o nazwie src w katalogu głównym mojego projektu:

/** @jsx React.DOM */ 

var Hello = React.createClass({ 
    render: function() { 
     return <div> 
       <h3>Hello, {this.props.name}</h3> 
      </div> 
    } 
}); 

React.renderComponent(
    <Hello name={"Jane Doe"} />, 
    document.getElementById('example') 
); 

w linii poleceń, kiedy należy przejść do w katalogu głównym mojego projektu i biegnę to:

jsx /src /build 

pliku wyjściowego helloworld.js jest produkowany w build folder, ale nie zawiera poprawnego skryptu JavaScript.

Oto jak zawartość wygląda następująco:

/** @jsx React.DOM */ 

var Hello = React.createClass({displayName: "Hello", 
    render: function() { 
     return <div> 
       <h3>Hello, {this.props.name}</h3> 
      </div> 
    } 
}); 

React.renderComponent(
    <Hello name={"Jane Doe"} />, 
    document.getElementById('example') 
); 

Jak widać, nadal zawiera HTML inline zamiast ważnego JavaScript. Brak wskazania błędu w wierszu poleceń. Wygląda to tak:

built Module("helloworld") 
["helloworld"] 

Czy ktoś ma pomysł, dlaczego tak się dzieje?

+0

spróbuj zrobić "jsx - watch -x jsx src/build /' – knowbody

+1

również powinieneś zrobić "React.render (....) ; 'zamiast' React.renderComponent(); ' – knowbody

+0

Unfortunat ely, żadna z tych sugestii nie zadziałała. Wyobrażam sobie również, że kompilator JSX nie ma informacji o interfejsie API React, ale po prostu renderuje wbudowany kod HTML w odpowiedni skrypt JavaScript. –

Odpowiedz

1

Może spróbuj owinąć twój html w nawias.

var Hello = React.createClass({displayName: "Hello", 
    render: function() { 
     return (
      <div> 
       <h3>Hello, {this.props.name}</h3> 
      </div> 
     ); 
    } 
}); 
0

Z dokumentów, które widziałem, że domyślny strumień wyjściowy dla jsx jest stdout, co oznacza, że ​​powinien wypisać plik do konsoli. Albo spróbuj użyć opcji --output lub przekierować polecenia do pliku:

jsx ./src/helloworld.jsx --output ./build/helloworld.js 

lub

jsx ./src/helloworld.jsx > ./build/helloworld.js 

Ja sam nie może uruchomić swój kod z JSX (Mówi moja składnia ISN” t dobry?), może spróbuj użyć babel-cli zamiast: How to convert react JSX files to simple JavaScript file [offline transformation]