2016-03-23 2 views
1

Это то, что у меня есть, используя ExpressJS:Webpack, React, JSX, Бабель - Неожиданный токен <

|-- app 
| |-- index.js 
|-- node_modules 
| |-- babel-core 
| |-- babel-loader 
| |-- babel-preset-react 
| |-- express 
| |-- react 
| |-- react-dom 
| |-- webpack 
|-- public 
| |-- js 
| | |-- app.js 
| |-- index.html 
|-- .babelrc 
|-- index.js 
|-- package.json 
|-- webpack.config.js 

/webpack.config.js

module.exports = { 
    entry: [ 
     './app/index.js' 
    ], 
    module: { 
     loaders: [{ 
      test: /\.js$/, 
      include: __dirname + '/app', 
      loader: "babel-loader", 
      query: { 
       presets:['react'] 
      } 
     }] 
    }, 
    output: { 
     filename: "app.js", 
     path: __dirname + '/public/js' 
    } 
}; 

/app/index.js

var React = require("react"); 
var ReactDOM = require("react-dom"); 
var People = React.createClass({ 
    ... 
}); 
ReactDOM.render(<People />, document.getElementById('app')); 

/.babelrc

{ 
    "presets": [ 
    "react" 
    ] 
} 

Когда я бегу WebPack я получаю:

модуль синтаксического анализа не удалось: /app/index.js Неожиданный маркер < Вам может понадобиться соответствующий загрузчик для обработки этого типа файлов.

Когда я заменяю <People />React.createElement(People, {}), он работает нормально.

У меня есть модуль babel-preset-react. У меня есть presets:['react'] с загрузчиком babel-loader. У меня есть файл .babelrc.

Почему webpack/babel не разбирает <People /> JSX ..?

+0

Какие версии Babel/React вы используете? – Andy

+1

Попробуйте добавить 'test:/\. (Js | jsx) $ /' в качестве теста. Возможно, это не разбор JSX-расширений. – lux

+0

@ Andy babel-core: 6.7.4, babel-loader: 6.2.4, babel-preset-реагировать: 6.5.0, реагировать: 0.14.7, реагировать: 0.14.7 –

ответ

2

Это оказалось проблемой для моего пути include. У меня было:

include: __dirname + '/app' 

Я теперь с помощью path:

include: path.join(__dirname, '/app') 

, который работает! Я нахожусь в Windows, не знаю, имеет ли это значение. Думаю, я начну использовать path с этого момента.

Было бы неплохо, если бы ошибка в webpack была чем-то вроде Can't find include folder/files.

+0

Я нахожусь на mac и имел ту же проблему – richbai90