Синтаксическая ошибка "Ожидается выражение, получено '<'" при попытке запустить учебник по реагированию

Я работаю через учебное пособие по реагированию с использованием моего собственного сервера (apache) и предлагаемого HTML файла и дословной копии примеров учебников...

Самый простой пример не удается на моем сервере, но работает на JSFiddle..

Мой HTML файл с script показан ниже.

script завершается с синтаксической ошибкой в ​​функции render:() {...

Сообщение об ошибке в Firefox и Safari (версия для Mac, последняя версия).

"" SyntaxError: ожидаемое выражение, получено '<' React.render(, document.getElementById('container') "" [Мой файл]

<html>
<head>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.2/marked.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/react.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/JSXTransformer.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

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

React.render(<Hello name="World" />, document.getElementById('container'));

</script>

<body>

    <div id="container">
    <!-- This element contents will be replaced with your component. -->
</div>


</body>
</html>

Ответ 1

В коде, который вы опубликовали, есть две проблемы.

Во-первых, трансформатор JSX не преобразует ваш код, потому что соответствующий атрибут type отсутствует в теге script.

Изменить

<script>
var Hello = React.createClass({
...

к

<script type="text/jsx">
var Hello = React.createClass({
...

Во-вторых, вы вызываете document.getElementById('container') до того, как div действительно существует на странице; переместите этот последний тег script и его содержимое после div (например, в нижней части body).

Вы должны получить код, аналогичный тому, как он показан в учебнике:

<!-- index.html -->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Hello React</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/react.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/JSXTransformer.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  </head>
  <body>
    <div id="content"></div>
    <script type="text/jsx">
      // Your code here
    </script>
  </body>
</html>

Ответ 2

Это старый поток, но я недавно столкнулся с этой ошибкой, когда выполнил сборку npm run для своего приложения React и просто скопировал ее из коробки Windows в коробку Linux с помощью WinSCP. Я использую nginx для обслуживания приложения на Linux-коробке. Оказывается, моя проблема заключалась в том, что не было разрешений на выполнение для файлов JS в статическом каталоге. Это вызвало ошибку и просто послужило моим index.html вместо файла js, поэтому выражение SyntaxError: ожидаемое, получило '<'. Надеюсь, это поможет кому-то, кто наткнется на эту ветку в будущем. Просто запустите chmod -R 755 static из каталога приложения

Ответ 3

Ответ Narsters работал для меня, но мне пришлось добавить эту строку в мой package.json

 "homepage": "./",