【问题标题】:electron-webpack-react error "Module parse failed: Unexpected character '@'"electron-webpack-react 错误“模块解析失败:意外字符 '@'”
【发布时间】:2019-10-11 02:20:47
【问题描述】:

我在这个项目中使用了 Electron、Webpack 和 React。当我尝试构建项目时,我最终遇到了这个错误:

Module parse failed: Unexpected character '@' (1:0)
You may need an appropriate loader to handle this file type.
@keyframes

错误总是指向 node_modules 文件夹内的特定 .css 文件,此时会出现错误:

@keyframes activeSwitchCircleAnimation {
 from {
    left: 0;
 } to {
    left: 14px; }
 }

@keyframes deactiveSwitchCircleAnimation {
 from {
    left: 14px;
 } to {
    left: 0; }
 }

我已经查看了一堆“意外字符'@'”的错误问题,其中大多数都指向 .sass 或 .scss 文件中发生的错误,这里不是这种情况。

这是 webpack 配置文件:

const webpack = require('webpack')
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const BabiliPlugin = require('babili-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')

const defaultInclude = path.resolve(__dirname, 'src')

module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader',
          'postcss-loader'
        ],
        include: defaultInclude
      },
      {
        test: /(\.scss|\.sass)$/,
        exclude: /node_modules/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader',
          'postcss-loader',
          'sass-loader'
        ],
        include: defaultInclude
      },
      {
        test: /\.jsx?$/,
        use: [{ loader: 'babel-loader' }],
        include: defaultInclude
      },
      {
        test: /\.(jpe?g|png|gif)$/,
        use: [{ loader: 'file-loader?name=img/[name]__[hash:base64:5].[ext]' }],
        include: defaultInclude
      },
      {
        test: /\.(eot|svg|ttf|woff|woff2)$/,
        use: [{ loader: 'file-loader?name=font/[name]__[hash:base64:5].[ext]' }],
        include: defaultInclude
      }
    ]
  },
  target: 'electron-renderer',
  plugins: [
    new HtmlWebpackPlugin(),
    new MiniCssExtractPlugin({
      filename: 'bundle.css',
      chunkFilename: '[id].css'
    }),
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('production')
    }),
    new BabiliPlugin()
  ],
  stats: {
    colors: true,
    children: false,
    chunks: false,
    modules: false
  }
}

【问题讨论】:

    标签: reactjs webpack electron


    【解决方案1】:

    尝试删除include: defaultInclude,然后放一个入口点。你的 webpack.config 文件应该是这样的:

    const webpack = require('webpack')
    const path = require('path')
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    const BabiliPlugin = require('babili-webpack-plugin')
    const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    
    const defaultInclude = path.resolve(__dirname, 'src')
    
    module.exports = {
      entry: defaultInclude,
      module: {
        rules: [
          {
            test: /\.css$/,
            use: [
              MiniCssExtractPlugin.loader,
              'css-loader',
              'postcss-loader'
            ]
          },
          {
            test: /(\.scss|\.sass)$/,
            exclude: /node_modules/,
            use: [
              MiniCssExtractPlugin.loader,
              'css-loader',
              'postcss-loader',
              'sass-loader'
            ]
          },
          {
            test: /\.jsx?$/,
            use: [{ loader: 'babel-loader' }]
          },
          {
            test: /\.(jpe?g|png|gif)$/,
            use: [{ loader: 'file-loader?name=img/[name]__[hash:base64:5].[ext]' }]
          },
          {
            test: /\.(eot|svg|ttf|woff|woff2)$/,
            use: [{ loader: 'file-loader?name=font/[name]__[hash:base64:5].[ext]' }]
          }
        ]
      },
      target: 'electron-renderer',
      plugins: [
        new HtmlWebpackPlugin(),
        new MiniCssExtractPlugin({
          filename: 'bundle.css',
          chunkFilename: '[id].css'
        }),
        new webpack.DefinePlugin({
          'process.env.NODE_ENV': JSON.stringify('production')
        }),
        new BabiliPlugin()
      ],
      stats: {
        colors: true,
        children: false,
        chunks: false,
        modules: false
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-26
      • 2017-04-04
      • 2019-08-04
      • 2018-11-28
      • 2018-11-10
      • 2019-05-20
      • 2017-11-04
      • 2018-03-29
      相关资源
      最近更新 更多