it-swarm.com.ru

Реагируйте, babel, веб-пакет не анализирует JSX-код

webpack.config.js

module.exports = {
  context: __dirname + "/app",
  entry: {
    javascript: "./app.js",
    html: "./index.html",
  },
  resolve: {
   extensions: ['', '.js', '.jsx']
 },
  output: {
    filename: "app.js",
    path: __dirname + "/dist",
  },
  module: {
    loaders: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: "babel-loader",
      },
      {
        test: /\.html$/,
        loader: "file?name=[name].[ext]",
      },
    ],
  },
}

package.json

{
  "name": "react-webpack-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel": "^6.0.15",
    "babel-core": "^6.0.20",
    "babel-loader": "^6.0.1",
    "file-loader": "^0.8.4",
    "webpack": "^1.12.2"
  },
  "dependencies": {
    "react": "^0.14.2"
  }
}

приложение/app.js

import React from "react";
import Greeting from "./greeting";

React.render(
  <Greeting name="World"/>,
  document.body
);

Я видел те же самые вопросы после поиска вокруг, но ни один из ответов, казалось, не относился ко мне. Я получаю следующую ошибку при запуске webpack:

ОШИБКА в ./app.js
Ошибка сборки модуля: SyntaxError: путь/к/проекту/реагировать-веб-пакет-проект/приложение/app.js: неожиданный токен (5: 2)

React.render(
  <Greeting name="World"/>,
  document.body
);

Я не уверен, почему я все еще получаю эту ошибку. Я предполагаю, что это как-то связано с моим файлом webpack.config.js, но не на 100% в чем проблема.

16
httpNick

Прежде всего: если вы используете React v ^ 0.14, вы должны визуализировать свой код, используя React-Dom. https://www.npmjs.com/package/react-dom

Во-вторых, это должно решить вашу проблему: babel-loader jsx SyntaxError: Неожиданный токен

8
dandel

Вам необходимо добавить пресеты в ваш babel-loader:

{
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: "babel-loader",
        presets: ['es2015', 'react']  
},

http://babeljs.io/docs/plugins/#presets

9
Abhinav Singi

В настоящее время я использую React 0.14.3. Решение ReactDOM не работало и не добавляло предустановки babel в webpack.config.js. По сути, эти решения работают, только если вы определили один загрузчик, но у меня был как загрузчик babel, так и загрузчик реакции-горячий.

Что DID работало для установки модуля предварительных настроек babel:

npm install babel-preset-react

а затем создайте файл .babelrc в каталоге моего проекта со следующим:

{
  "presets": ['react']
}

Это задокументировано в http://babeljs.io/docs/plugins/preset-react/ , как указано Abhinav Singi

5
JESii

Для меня ответом было включить пресеты в блок запроса:

query: {
  presets: ['react', 'es2015']
}
1
JoeTidee

это поможет мне решить эту проблему.

создайте новый файл .babelrc в том же каталоге webpack.config.js. Добавьте это к .babelrc

  {
  "stage": 2,
  "env": {
    "development": {
      "plugins": [
        "react-display-name",
        "react-transform"
      ],
      "extra": {
        "react-transform": {
          "transforms": [{
            "transform": "react-transform-hmr",
            "imports": ["react"],
            "locals":  ["module"]
          }]
        }
      }
    }
  }
}
0
yussan