• css-loader导致vue中样式失效


    module.exports = {
    	...
        css: {
        	...
            esModule: false
        }
        ...
    }
    

      

    问题描述

    vue文件中的样式失效

    环境

    • vue-cli 4.4.6
    • css-loader 4.2.1
    • vue-style-loader 4.1.2

    原因

    vue-cli 4.4.6

    vue-cli 4.4.6默认对css-loader配置为空

    css-loader 4.2.1

    css-loader4.0后默认对esModule设置的是true

    vue-style-loader 4.1.2

    vue-style-loader 4.1.2默认接收的是commonjs的结果,也就是默认接收的是“css-loader中esModule设置的是false的结果”,
    所以一个配置的是true,一个接收的是false,最终就不会显示样式了。

    方案

    1. 在项目的vue.config.js中对css的esModule改成false
    
    
    
    1. 修改vue-style-loader的源码
      vue-style-loader/index.js:
    var shared = [
        '// style-loader: Adds some css to the DOM by adding a <style> tag',
        '',
        '// load the styles',
        'var content = require(' + request + ').default;', //这里加一个.default即可
        ...
    

      

    1. 修改css-loader源码,让esModule默认为false

    css-loader/dist/utils.js

    function normalizeOptions(rawOptions, loaderContext) {
      if (rawOptions.icss) {
        loaderContext.emitWarning(new Error('The "icss" option is deprecated, use "modules.compileType: "icss"" instead'));
      }
    
      const modulesOptions = getModulesOptions(rawOptions, loaderContext);
      return {
        url: typeof rawOptions.url === 'undefined' ? true : rawOptions.url,
        import: typeof rawOptions.import === 'undefined' ? true : rawOptions.import,
        modules: modulesOptions,
        // TODO remove in the next major release
        icss: typeof rawOptions.icss === 'undefined' ? false : rawOptions.icss,
        sourceMap: typeof rawOptions.sourceMap === 'boolean' ? rawOptions.sourceMap : loaderContext.sourceMap,
        importLoaders: rawOptions.importLoaders,
        esModule: typeof rawOptions.esModule === 'undefined' ? false : rawOptions.esModule //默认改成false
      };
    }
    

      

    css-loader开发有点坑啊~ 之前版本都是false,更新后直接改成true

  • 相关阅读:
    strcpy和memcpy的区别《转载》
    C++数组引用
    关于C++中继承、重载、掩盖 《转载》
    对于js原型和原型链继承的简单理解(第三种,复制继承)
    对于js原型和原型链继承的简单理解(第二种,对象冒充)
    腾讯的一道js面试题(原型)
    面试题,自己写写dome总是好的
    对于js原型和原型链继承的简单理解(第一种,原型链继承)
    html+css布局小练习w3cfuns
    C#泛型列表List<T>基本用法总结
  • 原文地址:https://www.cnblogs.com/ygunoil/p/14095931.html
Copyright © 2020-2023  润新知