zoukankan      html  css  js  c++  java
  • vue项目之webpack打包静态资源路径不准确

    摘自:https://blog.csdn.net/viewyu12345/article/details/83187815

    问题

    1. 将打包好的项目部署到服务器,发现报错说图片找不到。
    2. 静态资源如js访问不到

    分析并且解决问题

    明确一点的就是,看到报错404,找不到静态资源,很明显,路径错误了。

    静态资源找不到如js文件
    资源打包路径有误,打包后的资源使用了绝对根目录路径,因此将项目部署到特定目录下,其引入的资源路径无法被正确解析。

    解决:

    找到config下面的index.js文件,将划线处改为如下样子。

     

    之前是根目录,肯定找不到文件,我们改成相对目录即可。打包后,去看看index.html中引入的文件就知道变化了。

    图片找不到
    首先我们来看一下我们打包后生成的文件目录:

     

     上面的报错,要是没有static/css就完全可以找到图片了。但是为什么有的图片能够找得到有的图片找不到呢,同样的方法写在css文件里面。这里我们就要了解一下webpack在打包我们的文件时候进行的操作了。

    webpack打包limit限制

     

    limit值为10000,表示字节。什么作用呢?就是小于这个字节限制的,不是不打包,而是转化为base64(css样式中,图片的代码变成了一堆字符)。大于的话就正常打包,加上7位hash值,就变成如下路径。

     

    跑到了img下面去了,img这个名字就是我们上面webpack配置的。这样路径就不对了,所以找不到图片。

    从源头分析问题

    在vue项目中,我们打包生成项目,跑命令如下。

    npm run build

    那么,我们就看看在执行这个命令中,运行的代码,以此入手。找到config下面的index.js文件

     

    打包后生成的文件代码:

     

    最开始,我们的assetsPublicPath值为'/',表示根目录,我们看看打包后的文件样子。

     

    这样直接从根目录获取,我们将项目部署到服务器上都是有名字的,这样直接到服务器根目录肯定不能获取。

    解决图片路径错误办法

    在build文件夹下面找到utils.js文件,如下图

     

    新增红色的部分,这样打包的样子就变成../../static的样子了,就可以解决我们的问题。

  • 相关阅读:
    Beta冲刺<7/10>
    Beta冲刺<6/10>
    Beta冲刺<5/10>
    Beta冲刺--冲刺总结
    Beta冲刺<4/10>
    实验四
    结对编程第二阶段
    实验二 结对编程第一阶段
    实验报告
    团队作业第六次——Beta冲刺
  • 原文地址:https://www.cnblogs.com/phoebeyue/p/10650282.html
Copyright © 2011-2022 走看看