记一次 webpack.config.js 的 scss 加载问题的解决方案以及事情分析

在迁移 vue-element-admin 到 electron-vue-serialport 的时候,发现了一次有趣的分析。

报错如下

ERROR in ./src/renderer/styles/variables.scss
    Module parse failed: Unexpected character '#' (2:6)
    You may need an appropriate loader to handle this file
type.
    | // base color
    | $blue:#324157;
    | $light-blue:#3A71A8;
    | $red:#C03639;
     @ ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./src/renderer/views/layout/components/Sidebar/index.vue 7:0-49
     @ ./src/renderer/views/layout/components/Sidebar/index.vue
     @ ./src/renderer/views/layout/components/index.js
     @ ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./src/renderer/views/layout/index.vue
     @ ./src/renderer/views/layout/index.vue
     @ ./src/renderer/router/index.js
     @ ./src/renderer/main.js

一开始没有细看,以为是大众常见问题,但后来仔细分析了一下,它其实就是要你把 scss 文件添加到工程下。

那么怎么做呢?

搜索两边的工程发现 vue-element-admin 没有相关代码,然后看了一下 webpack.config.js 的加载情况,可以发现有如下配置

      ...
      {
        test: /\.(css)$/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: 'css-loader'
        })
      },
      ...

可以看到它并没有匹配 scss 的样式文件,那么我简单修改一下正则。

      const ExtractTextPlugin = require('extract-text-webpack-plugin')
      ...
      {
        test: /\.(css|scss)$/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: 'css-loader'
        })
      },
      ...

but 失败,看来不是这样操作的。

于是搜索过程中注意到 scss 是有 sass-loader 的,所以修改成如下。

      const ExtractTextPlugin = require('extract-text-webpack-plugin')
      ...
      {
        test: /\.(css)$/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: 'css-loader'
        })
      },
      {
        test: /\.scss$/,
        use: ExtractTextPlugin.extract({
            fallback: 'style-loader',
            use: ['css-loader', 'sass-loader']
        })
      },
      ...

于是解决,相关的配置细节看这个内容 https://www.cnblogs.com/songxia/p/10295830.html 。

重点不在于如何去修改,而是分析并解决问题的过程,如何解决问题才是我们需要学习的。

原文地址:https://www.cnblogs.com/juwan/p/12274949.html

时间: 2024-07-30 15:07:44

记一次 webpack.config.js 的 scss 加载问题的解决方案以及事情分析的相关文章

对于HTML页面中CSS, JS, HTML的加载与执行过程的简单分析

最近在研究HTML页面中JavaScript的执行顺序问题.在JavaScript中,定义一个方法或者函数有很多方式,最常见的有2中,function语句式与函数直接量方式. 对于function语句式,解释器会优先解释.即加载了这个js文件后,会扫描一下所有的js代码,然后把该优先执行的东西先执行了,然后再从上到下按顺序执行.所以,定义的代码可以在执行的代码后边.就跟C#中的方法定义一样.解释器已经记住了这个方法,知道在内存中的哪里,用的时候直接去取就行了. C#语言是,对象中的属性与方法具有

webpack.config.js配置文件

1.基本配置 webpack在执行时,除在命令行传入参数,还可以通过指定的配置文件来执行.默认会搜索当前目录下webpack.config.js.这个文件是一个node.js模块,返回一个json格式的配置对象,或者通过--config选项来指定配置文件. //创建webpack.config.js var webpack = require('webpack'); module.exports = { entry:'./entry.js', //入口文件 output:{ //node.js中

webpack.config.js====CSS相关:::css加载器

1. 安装: //loader加载器加载css和sass模块 cnpm install style-loader css-loader node-sass sass-loader --save-dev //loader加载器加载css和less模块 cnpm install style-loader css-loader less less-loader --save-dev //样式抽离文件 如果是webpack4.X 需要加@next //现在webpack4.x支持mini-css-ext

webpack.config.js====CSS相关:::postcss-loader加载器,自动添加前缀

1. 安装:复制拷贝文件 cnpm install postcss-loader autoprefixer --save-dev 2. webpack.config.js中使用 rules: [ //配置css加载器 { test: /\.css$/, use: cssExtract.extract({ fallback: "style-loader", use: ["css-loader", "postcss-loader"] }) }, //

基于webpack.config.js和babel.config.js及package.json构建项目的demo

webpack.config.js的内容如下 const HtmlWebpackPlugin = require('html-webpack-plugin'); const Webpack = require("webpack"); const ConcatPlugin = require('webpack-concat-plugin'); const CopyPlugin = require('copy-webpack-plugin'); const Path = require('

[js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解

接着上文,重新在webpack文件夹下面新建一个项目文件夹demo2,然后用npm init --yes初始化项目的package.json配置文件,然后安装webpack( npm install [email protected] --save-dev ),然后创建基本的项目文件夹结构,好了,我们的又一个基本项目结构就搭建好了. 第一.开始通过webpack.config.js文件配置我们的webpack项目 首先在项目文件夹demo2下面,新建一个webpack.config.js文件,这

webpack前端构建工具学习总结(三)之webpack.config.js配置文件

Webpack 在执行的时候,除了在命令行传入参数,还可以通过指定的配置文件来执行.默认情况下,会搜索当前目录的 webpack.config.js 文件,这个文件是一个 node.js 模块,返回一个 json 格式的配置信息对象,或者通过 --config 选项来指定配置文件. webpack文档:https://webpack.github.io/docs/ 1.新建一个文件夹src存放打包前的源文件,dist文件夹存放打包后的文件,新建一个webpack.config.js为webpac

[js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)

本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entry webpack.dev.config.js文件代码: 1 console.log( __dirname ); //D:\ghostWu\bak\webpack\demo2 2 module.exports = { 3 entry : ['./src/js/main.js', './src/js/

webpack教程(二)——webpack.config.js文件

首先我们需要安装一个webpack插件html-webpack-plugin,该插件的作用是帮助我们生成创建html入口文件.执行如下命令 npm install html-webpack-plugin --save-dev 在项目app目录下建立component.js文件,写入如下代码 export default (text='hello world')=>{ const element=document.createElement('div'); element.innerHTML=te