React微前端应用SCSS与Webpack配置问题:导入Bootstrap报错
解决React微前端中SCSS与Webpack配置问题
核心问题分析
你当前的webpack.common.js里完全没有配置SCSS相关的loader规则,而且报错显示sass-loader在处理JS文件里的import('./bootstrap')语句——这说明要么是loader的匹配规则错误(把JS文件当成SCSS处理),要么是你导入Bootstrap的路径/方式不对,导致Webpack错误地用sass-loader解析JS代码。
解决方案步骤
1. 安装必要依赖
先确保安装了处理SCSS所需的loader:
npm install style-loader css-loader sass-loader sass --save-dev
2. 配置Webpack的SCSS loader规则
在webpack.common.js的module.rules数组中添加SCSS的处理规则:
const HtmlWebpackPlugin = require('html-webpack-plugin') module.exports = { module: { rules: [ { test: /\.m?js$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-react', '@babel/preset-env'], plugins: ['@babel/plugin-transform-runtime'], }, }, }, // 新增SCSS处理规则 { test: /\.s[ac]ss$/i, use: [ // 将CSS注入到DOM中 'style-loader', // 解析CSS模块 'css-loader', // 编译SCSS为CSS 'sass-loader', ], }, ], }, plugins: [ new HtmlWebpackPlugin({ template: './public/index.html', }), ], }
3. 修正Bootstrap导入语句
确保你导入的是Bootstrap的SCSS文件(而非错误路径或未指定后缀的文件),如果是使用官方Bootstrap包,修改index.js的导入:
// 导入Bootstrap官方SCSS文件 import 'bootstrap/scss/bootstrap.scss'; // 如果是自定义的bootstrap.scss文件,写对相对路径 // import './bootstrap.scss';
报错原因说明
Sass的语法里没有import('./xxx')这种JS动态导入的写法,当Webpack没有正确配置SCSS规则,或者导入路径错误导致文件类型识别混乱时,sass-loader会错误地解析JS代码,从而抛出expected "{"的语法错误。
内容的提问来源于stack exchange,提问作者Eylon Shmilovich
相关产品推荐
相关产品推荐

