2016-11-17 1 views
1

У меня есть следующий код в моем .jsx-файле.Ошибка при загрузке jsx-файлов с фигурными скобками внутри jsx

var React = require('react'), 
    ReactDOM = require('react-dom'); 
module.exports = React.createClass({ 
    render: function() { 
     var classes = {container: 'test'}; 
     return (<div className={classes.container}></div>) 
    } 
}); 

Я использую следующую конфигурацию загрузчика в WebPack-DEV-сервер для JSX файлов

loaders: [{ 
      test: /\.jsx?$/, 
      loaders: ['react-hot', 'babel?presets[]=es2015,presets[]=react'], 
      exclude: /node_modules/ 
      },{ 
      test: /\.jsx?$/, 
      loader: 'string-replace', 
      query: jsRepQuery, 
      exclude: /node_modules/ 
      }] 

Я получаю следующее сообщение об ошибке.

ERROR in ./~/test.jsx 
Module parse failed: /test.jsx Unexpected token (20:23) 
You may need an appropriate loader to handle this file type. 
SyntaxError: Unexpected token (20:23) 

В основном положение ошибки (20:23) является фигурной скобкой {. Нужно ли использовать любой другой загрузчик?

Обновление: файл с парсером не найден в node_modules папке. Поскольку он исключен, похоже, что мы получаем эту ошибку. Но тогда я не хочу, чтобы все node_modules выполнялись. Как я могу просто исключить этот node_module из списка исключений?

ответ

1

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

loaders: [{ 
      test: /\.jsx?$/, 
      loaders: ['react-hot', 'babel?presets[]=es2015,presets[]=react'], 
      exclude: /node_modules/ 
      },{ 
      test: /\.jsx?$/, 
      loader: 'string-replace', 
      query: jsRepQuery, 
      exclude: /node_modules/ 
      },{ 
       test: /\.jsx?$/, 
       loaders: ['react-hot', 'babel?presets[]=es2015,presets[]=react'], 
       include: function(absPath) { 
       if(absPath.indexOf('/node_modules/orb/') > -1) { 
       return true; 
       } else { 
        return false; 
       } 
      } 
      }]