material-ui.dropzone:您可能需要一个合适的加载器来处理此文件类型

时间:2017-11-30 19:43:09

标签: reactjs webpack material-ui babel

在我的React应用程序中集成material-ui-dropzone,我收到了这个错误:

  

./~ / material-ui-dropzone / src / index.jsx模块解析失败:   ... \ client \ node_modules \ material-ui-dropzone \ src \ index.jsx意外   token(123:26)您可能需要一个合适的加载器来处理此文件   类型。 SyntaxError:意外的标记(123:26)

这是我的webpack配置:

const Path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const Webpack = require('webpack'); const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = (options) => {   const ExtractSASS = new ExtractTextPlugin(`/styles/${options.cssFileName}`);

  const webpackConfig = {
    devtool: options.devtool,
    entry: [
      `webpack-dev-server/client?http://localhost:${+ options.port}`,
      'webpack/hot/dev-server',
      Path.join(__dirname, '../src/app/index'),
    ],
    output: {
      path: Path.join(__dirname, '../dist'),
      filename: `/scripts/${options.jsFileName}`,
    },
    resolve: {
      extensions: ['', '.js', '.jsx'],
    },
    module: {
      loaders: [{
        test: /.jsx?$/,
        include: Path.join(__dirname, '../src/app'),
        loader: 'babel',
      }],
    },
    plugins: [
      new Webpack.DefinePlugin({
        'process.env': {
          NODE_ENV: JSON.stringify(options.isProduction ? 'production' : 'development'),
        },
        "global.GENTLY": false
      }),
      new HtmlWebpackPlugin({
        template: Path.join(__dirname, '../src/index.html'),
      }),
    ],
    node: {
      __dirname: true,
    },

  };

  if (options.isProduction) {
    webpackConfig.entry = [Path.join(__dirname, '../src/app/index')];

    webpackConfig.plugins.push(
      new Webpack.optimize.OccurenceOrderPlugin(),
      new Webpack.optimize.UglifyJsPlugin({
        compressor: {
          warnings: false,
        },
      }),
      ExtractSASS
    );

    webpackConfig.module.loaders.push({
      test: /\.scss$/,
      loader: ExtractSASS.extract(['css', 'sass']),
    });   } else {
    webpackConfig.plugins.push(
      new Webpack.HotModuleReplacementPlugin()
    );

    webpackConfig.module.loaders.push({
      test: /\.scss$/,
      loaders: ['style', 'css', 'sass'],
    });

    webpackConfig.devServer = {
      contentBase: Path.join(__dirname, '../'),
      hot: true,
      port: options.port,
      inline: true,
      progress: true,
      historyApiFallback: true,
      stats: 'errors-only',
    };   }

  return webpackConfig; 

};

Babel配置文件是:

{
  "presets": ["react", "es2015", "stage-1"]
}

这是我唯一遇到问题的图书馆。知道问题可能在哪里?

1 个答案:

答案 0 :(得分:1)

如果您使用的是webapck@3.x 尝试修改您的babel装载机

module: {
  rules: [
    {
      test: /\.jsx?$/,
      include: Path.join(__dirname, '../src/app'),
      use: {
        loader: 'babel-loader',
        options: {
          presets: ["react", "es2015", "stage-1"],
        }
      }
    }
  ]
}

您可以在此处引用https://webpack.js.org/loaders/babel-loader/

注意到在您的加载程序配置中,请写babel-loader而不是babel。还要确保你的devDependencies有npm install个正确的babel npm包,这取决于你的webpack版本。

如果它无法解决您的问题,请粘贴您的package.json文件,这样我就可以了解您的webpack版本。

干杯。