在vue2使用element-ui遇到sass不兼容的问题并解决

不能载入sass-loader:Module not found: Error: Can’t resolve ‘sass-loader’
<style lang="scss" scoped>
li {
  background: red;
}
</style>

解决方法1:(不推荐)

把node版本回退到v14.19.0(使用nvm管理工具)

node历史版本下载

在这里插入图片描述

解决方法2:(推荐)

使用less

先把sass所有配置删除

5fa142de9ee35bd7c66f8bd261a25633

删除node_modules和package-lock.json

清除npm缓存

npm cache clean -force

重新安装依赖

npm install

npm install less@3.0.4 --save
npm install less-loader@5.0.0 --save

在webpack.base.config.js的rules里添加

{
        test: /\.less$/,
        loader: "style-loader!css-loader!less-loader"
}

package.json配置

{
  "name": "vue-element",
  "version": "1.0.0",
  "description": "A Vue.js project",
  "author": "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "private": true,
  "scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "build": "node build/build.js"
  },
  "dependencies": {
    "element-ui": "^2.15.14",
    "less": "^3.0.4",
    "less-loader": "^5.0.0",
    "vue": "^2.7.16",
    "yarn": "^1.22.22"
  },
  "devDependencies": {
    "@vue/cli": "^3.5.2",
    "autoprefixer": "^7.1.2",
    "babel-core": "^6.22.1",
    "babel-helper-vue-jsx-merge-props": "^2.0.3",
    "babel-loader": "^7.1.1",
    "babel-plugin-syntax-jsx": "^6.18.0",
    "babel-plugin-transform-runtime": "^6.22.0",
    "babel-plugin-transform-vue-jsx": "^3.5.0",
    "babel-preset-env": "^1.3.2",
    "babel-preset-stage-2": "^6.22.0",
    "chalk": "^2.0.1",
    "copy-webpack-plugin": "^4.0.1",
    "css-loader": "^0.28.0",
    "extract-text-webpack-plugin": "^3.0.0",
    "file-loader": "^1.1.4",
    "friendly-errors-webpack-plugin": "^1.6.1",
    "html-webpack-plugin": "^2.30.1",
    "node-notifier": "^5.1.2",
    "node-sass": "yarn:dart-sass",
    "optimize-css-assets-webpack-plugin": "^3.2.0",
    "ora": "^1.2.0",
    "portfinder": "^1.0.13",
    "postcss-import": "^11.0.0",
    "postcss-loader": "^2.0.8",
    "postcss-url": "^7.2.1",
    "rimraf": "^2.6.0",
    "semver": "^5.3.0",
    "shelljs": "^0.7.6",
    "uglifyjs-webpack-plugin": "^1.1.1",
    "url-loader": "^0.5.8",
    "vue-loader": "^13.3.0",
    "vue-router": "^3.5.1",
    "vue-style-loader": "^3.0.1",
    "vue-template-compiler": "^2.5.2",
    "webpack": "^3.5.2",
    "webpack-bundle-analyzer": "^2.9.0",
    "webpack-dev-server": "^2.9.1",
    "webpack-merge": "^4.1.0"
  },
  "engines": {
    "node": ">= 6.0.0",
    "npm": ">= 3.0.0"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

Login.vue

<template>
  <div>
    <el-form ref="form" :model="form" label-width="80px" class="login-box">
      <el-form-item label="账号">
        <el-input v-model="form.account"></el-input>
      </el-form-item>
      <el-form-item label="密码">
        <el-input v-model="form.password"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="onSubmit">登录</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  data() {
    return {
      form: {
        account: "",
        password: "",
      },
    };
  },
  methods: {
    onSubmit() {
      alert("submit!");
    },
  },
};
</script>
<style lang="less" scoped>
.login-box{
  width:350px
}
</style>

样式生效

在这里插入图片描述

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用ElementUI的过程,可能会遇到element-ui sass报错的情况。要解决这个问题,你可以尝试以下几个步骤: 1. 确保你已正确引入了ElementUI的样式和组件库。可以通过在你的HTML文件里引入样式文件和组件库的脚本来实现。比如在头部添加<link>标签引入样式文件,以及在<body>底部添加<script>标签引入组件库的脚本。 2. 检查你所使用ElementUI版本是否与你的项目版本兼容。不同版本的ElementUI可能对应不同的依赖包和配置。你可以通过npm命令安装与你项目版本兼容的ElementUI主题相关的包,比如element-theme-chalk。 3. 确保你的开发环境配置正确。在你的项目,可以通过package.json文件的dependencies和devDependencies字段查看ElementUI的版本信息。另外,你还需要检查你使用的Node.js版本和@vue/cli版本是否与ElementUI兼容。按照原文提供的版本信息,你的项目应该是兼容的。 如果你仍然遇到element-ui sass报错的问题,可以先查看具体的报错信息,然后在ElementUI的官方文档或社区寻找解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用element UI在线运行无效、报错问题(Uncaught ReferenceError: Vue is not defined)](https://blog.csdn.net/weixin_44479794/article/details/124005332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ElementUI自定义主题报错“primordials is not defined”最佳解决方案](https://blog.csdn.net/sinat_36728518/article/details/113310494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值