You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Webpack配置报错:Unexpected character '@',需添加适配Loader

解决Webpack解析semantic-ui-css中@import语句的错误

你遇到的问题很典型——Webpack没法处理semantic-ui-css包里CSS文件中的@import语法,因为你的配置只给.less文件配了loader,完全没考虑普通.css文件的处理逻辑。

问题根源

报错里的Unexpected character '@',本质是Webpack碰到CSS文件里的@import时,找不到对应的loader来解析它。semantic-ui-css的核心是CSS文件,而你当前的配置只处理.less,自然就卡壳了。

解决方案

分两步走就能搞定:

  1. 先装依赖的loader
    如果还没安装style-loader和css-loader,先执行这条命令:
npm install --save-dev style-loader css-loader

要是你的url-loader也没装,也得补上:npm install --save-dev url-loader file-loader

  1. 修改Webpack配置,新增.css文件处理规则
    在module.rules数组里加一个专门处理.css文件的规则,保留你原有的.less规则就行。修改后的完整配置如下:
var webpack = require('webpack');
var path = require('path');
var parentDir = path.join(__dirname, '../');

module.exports = {
  entry: [
    path.join(parentDir, 'index.js')
  ],
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        loader: 'babel-loader'
      },
      {
        test: /\.less$/,
        use: ["style-loader", "css-loader", "less-loader"]
      },
      // 新增的.css文件处理规则
      {
        test: /\.css$/,
        use: ["style-loader", "css-loader"]
      },
      {
        test: /\.(png|woff|woff2|eot|ttf|svg)$/,
        loader: 'url-loader?limit=100000'
      }
    ]
  },
  output: {
    path: parentDir + '/dist',
    filename: 'bundle.js'
  },
  devServer: {
    contentBase: parentDir,
    historyApiFallback: true
  }
}

为什么这样改?

  • css-loader的作用是解析CSS里的@import、url()这类引用,把它们转换成Webpack能识别的模块;
  • style-loader会把解析后的CSS注入到页面的<style>标签里,让样式真正生效;
  • 新增的规则专门匹配.css文件,这样semantic-ui-css包里的CSS文件就能被正确处理了。

内容的提问来源于stack exchange,提问作者Dillon Dunn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 08:53:10