• vue-cli构建路径加载资源出错问题


    这份文档是对应 @vue/cli 3.x 版本的,官方文档https://cli.vuejs.org/zh/guide/

    项目打包执行npm run build的时候,打开dist目录的index.html发现资源没有正确加载;

    例如你的网站根目录是www.xxx.com,当你把dist放到根目录下面,访问www.xxx.com/dist/index.html的时候会出错;

    因为加载资源会从根目录找也就是www.xxx.com/css/app.1e08cf93.css;然而你的css文件是在www.xxx.com/dist/css/app.1e08cf93.css;

    解决方法:

    在项目根目录新建一个Vue.config.js

    添加代码:

    module.exports = {
     // 基本路径
     publicPath: './',
     // 生产环境是否生成 sourceMap 文件
     //productionSourceMap: false, //把这个改为false。
     /*不然在最终打包的文件中会出现一些map文件,
     map文件的作用在于:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。
     有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错 */
    
     // 服务器端口号
     // devServer: {
     // port: 1234,
     // },
    }
    module.exports = {
     // 基本路径
     publicPath: './',
     // 生产环境是否生成 sourceMap 文件
     //productionSourceMap: false, //把这个改为false。
     /*不然在最终打包的文件中会出现一些map文件,
     map文件的作用在于:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。
     有了map就可以像未加密的代码一样,准确的输出是哪一行哪一列有错,但是浏览器也就能直接看到vue源码 */
    
     // 服务器端口号
     // devServer: {
     // port: 1234,
     // },
    }

    主要是, 在/前面加一个点;这样构建打包出来加载资源的路径就变成如下图: 

    发现本来是/css/app.1e08cf93.css的变成了css/app.1e08cf93.css,前面少了个  /,

    因为加 / 使用绝对路径会定位到网站根目录,不加就会引用相对路径自动匹配,这样你访问网站就会正确加载资源了

    publicPath: './'

     

    当然如果你的网站根目录本来就是dist下面,那就不会出现以上加载资源错误问题;

    不过最好还是配置Vue.config.js省得出问题;

  • 相关阅读:
    你的面向对象技术在哪个级别?
    图解面向对象中的聚合与耦合概念
    系统架构39问
    谈谈对一些软件架构设计箴言的理解
    mysql 常用见的错误处理
    mysql 局域网连接
    mysql版本:'for the right syntax to use near 'identified by 'password' with grant option'
    Ubuntu系统开放指定端口
    spring cloud 项目
    spring cloud 知识总结
  • 原文地址:https://www.cnblogs.com/JahanGu/p/10920126.html
Copyright © 2020-2023  润新知