vue css 相对路径导入问题级踩坑记录


Posted in Vue.js onJune 05, 2022

前提

npm install style-loader --save-dev
npm install css-loader --save-dev
npm install file-loader --save-dev
npm install vue-style-loader — save

利用官方的组件解决css 以及其他静态资源的路径问题

先附上成功的配置

1.build/utils.js

关键的地方在:

vue css 相对路径导入问题级踩坑记录

2.build/webpack.base.conf.js

vue css 相对路径导入问题级踩坑记录

遇到的坑

1.错误写法

vue css 相对路径导入问题级踩坑记录

第一行用的是绝对路径,第二行用的是相对路径。

这样写造成的错误:

Module build failed: Error: Failed to find ‘~@/assets/css/login.css’

经过多次尝试,以及搜索了很久。有说法是style内部不支持~@这种方式的路径指向。

2.正确的写法

vue css 相对路径导入问题级踩坑记录

3.如果想在“style”里面用上~@表示的相对路径

接下来介绍我已经实现的方案:

首先选用Less(http://lesscss.cn/) +postcss (https://www.postcss.com.cn/)。

接下来是具体做法,直接上当前配置。

先安装以下指令:

npm install less less-loader extract-text-webpack-plugin --sava-dev

然后打开工程的/build/ 新建文件 postcss.config.js

module.exports = {
  plugins: {
    'autoprefixer': {
      browsers: 'last 5 version'
    }
  },
  'postcss-import': {
   resolve(id) {
     if (id.charAt(0) == '~') {
       return id.substr(1)
     } else {
       return id
     }
   }
  }
}

修改webpack.base.conf.js 的配置,增加:

// 它会应用到普通的 `.css` 文件
      // 以及 `.vue` 文件中的 `<style>` 块
      {
        test: /\.css$/,
        exclude: /node_modules/,
        use: [{
            loader: 'style-loader'
          }, {
            loader: 'css-loader',
            options: {
              importLoaders: 1,
            }
          },
          {
            loader: 'postcss-loader'
          }
        ]
      },
      {
        test: /\.less$/,
        loader: "style-loader!css-loader!less-loader"
      },

修改完之后,重启webpack服务。这里我是用Mac 的终端,在webpack服务窗口使用command + C 就是结束当前运行的服务,再使用npm run dev 重启就可以。

在.vue 文件内的最后使用

<style lang="less" scoped>
  @import "~assets/css/rank.less";
  @import "~assets/css/common.less";
  .contentBox {
    padding: 20px;
  }
</style>

这里要注意加上 ~ , 不然依然无法识别路径。这里暂时还没找到原因,看别人的是可以直接使用。网上教程很多,但是很难找到比较完整的东西,对于自学的娃是伤不起,也没有能一直免费为你解答问题的人。还是自己慢慢摸索,相信大家都能有所成长。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。 


Tags in this post...

Vue.js 相关文章推荐
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
Vue实现简易购物车页面
Dec 30 Vue.js
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
Vue中ref和$refs的介绍以及使用方法示例
Jan 11 Vue.js
Vue实现简单计算器
Jan 20 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
Vite和Vue CLI的优劣
Jan 30 Vue.js
vue中axios封装使用的完整教程
Mar 03 Vue.js
Vue接口封装的完整步骤记录
May 14 Vue.js
一篇文章学会Vue中间件管道
Jun 20 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
vue elementUI表格控制对应列
Apr 13 Vue.js
vue中data里面的数据相互使用方式
Jun 05 #Vue.js
Vue 打包后相对路径的引用问题
Jun 05 #Vue.js
vue实现在data里引入相对路径
Jun 05 #Vue.js
ant design vue的form表单取值方法
Jun 01 #Vue.js
vue ant design 封装弹窗表单的使用
Jun 01 #Vue.js
vue实现登陆页面开发实践
May 30 #Vue.js
vue router 动态路由清除方式
May 25 #Vue.js
You might like
文件上传程序的全部源码
2006/10/09 PHP
php头像上传预览实例代码
2017/05/02 PHP
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
JavaScript移除数组元素减少长度的方法
2013/09/05 Javascript
JS实现支持多选的遍历下拉列表代码
2015/08/20 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
如何搜索查找并解决Django相关的问题
2014/06/30 Python
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
Python操作MySQL简单实现方法
2015/01/26 Python
详解python时间模块中的datetime模块
2016/01/13 Python
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
python实现趣味图片字符化
2019/04/30 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
pytorch进行上采样的种类实例
2020/02/18 Python
python 已知平行四边形三个点,求第四个点的案例
2020/04/12 Python
基于Python的自媒体小助手---登录页面的实现代码
2020/06/29 Python
浅析python中的del用法
2020/09/02 Python
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
幼儿园数学教学反思
2014/02/02 职场文书
小学先进集体事迹材料
2014/05/31 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
领导欢迎词范文
2015/01/26 职场文书
2015年母亲节寄语
2015/03/23 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
网络研修心得体会
2016/01/08 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL