Подтвердить что ты не робот

Синтаксис импорта не работает с webpack

Я получил ошибку Illegal import declaration. когда я пытался интегрировать реакцию js repo с webpack

Я перенес исходный код из https://github.com/dptoot/react-event-calendar/blob/master/example/src/example.js

Как я могу исправить ошибку Illegal import declaration?

Я думаю, что синтаксис import работает только в некоторых js lib?

Ошибка

ERROR in ./app/main.js
Module build failed: Error: Parse Error: Line 2: Illegal import declaration
    at throwError (/Users/poc/sandbox/ha/node_modules/jsx-loader/node_modules/jstransform/node_modules/esprima-fb/esprima.js:2823:21)

main.js

var React = require('react');
const EventCalendar = require('react-event-calendar');

import moment from 'moment';
import Row from 'react-bootstrap/lib/Row';
import Col from 'react-bootstrap/lib/Col';
import Button from 'react-bootstrap/lib/Button';
import ButtonToolbar from 'react-bootstrap/lib/ButtonToolbar';
import Popover from 'react-bootstrap/lib/PopOver';
import Overlay from 'react-bootstrap/lib/Overlay';

webpack.config.js

var path = require('path');
var webpack = require('webpack');


var config = module.exports = {
  // the base path which will be used to resolve entry points
  context: __dirname,
  // the main entry point for our application frontend JS
  entry: './app/main.js',
  output: {
    filename: 'main.js'
  },

  resolve: {
      extensions: ['', '.js', '.jsx', '.ts']
  },  

  module: {
    loaders: [
         {
          test: /\.jsx?$/, 
          exclude: /node_modules/, 
          loader: 'jsx-loader?insertPragma=React.DOM&harmony' }
    ]
  }

};
4b9b3361

Ответ 1

Используйте Babel через babel-loader, чтобы преобразовать объявления import (и другие ES2015, если хотите). http://babeljs.io/docs/setup/#webpack

Ответ 2

Как ответил @JMM, кажется, вам нужно babel-loader. кроме того, я все еще сталкивался с одной и той же проблемой и, наконец, разрешался путем редактирования webpack.config.js, таких как

   module: {
     loaders: [
-      {test: /\.jsx?$/, loader: 'babel-loader'},
-      {test: /\.jsx$/, loader: 'jsx-loader'}
+      {test: /\.jsx$/, loader: 'jsx-loader'},
+      {test: /\.jsx?$/, loader: 'babel-loader'}
     ]
   },

или потому, что jsx-loader больше не работает с этим конфигом, его можно удалить.

Я надеюсь, что это поможет