解决 vue-cli index.js dev 配置中 assetsPublicPath 的值不能填 ./ 的问题

news/2024/7/10 1:10:13 标签: vue, webpack, vue-cli, devServer, wechat

问题篇

最近使用frp代理开发微信vue应用,frp代理不直接暴露根目录,因为我的根目录已经被我的博客占用了,所以就使用nginx又代理了一层,访问方式从越来的
wechat.youngboy.vip 变成 wechat.youngboy.vip/proxy ,在游览器中 / 代表域名的根目录,./代表当前路径
比如:

域名
wechat.youngboy.vip

目录结构
--+ static
-----xx.css
-- app.js
-- index.html

反向代理路径为 /proxy

游览器访问路径为 
wechat.youngboy.vip/proxy/index.html 200

html中的src标签
<script src = "/app.js"/>  游览器会发送 wechat.youngboy.vip/app.js 404
<script src = "./app.js">  游览器访问会发送 wechat.youngboy.vip/proxy/app.js 200

线上发布的时候一般都会使用nginx反向代理,所以使用./是最靠谱的,但是vue-cli dev 中的 assetsPublicPath不能配置成"./",而build中的却可以配置,并可以正常访问,虽然不影响发布但是影响开发效率。

解决篇

翻阅了一下午的webpack文档发现是因为webpack.dev.conf.js 中的publicPath的值配错了,原来配置的是config.dev.assetsPublicPath,只要把publicPath的值改成 "/" 就行了

在这里插入图片描述

原因分析

publicPath 总是以斜杠(/)开头和结尾,所以publicPath不能配置为./ 所以访问时会报错

devServerpublicPath__35">devServer.publicPath 官方解释

数据类型 string
此路径下的打包文件可在浏览器中访问。

假设服务器运行在 http://localhost:8080 并且 output.filename 被设置为 bundle.js。默认 publicPath"/",所以你的包(bundle)可以通过 http://localhost:8080/bundle.js 访问。

可以修改 publicPath,将 bundle 放在一个目录:

publicPath: "/assets/"

你的包现在可以通过 http://localhost:8080/assets/bundle.js 访问。

确保 publicPath 总是以斜杠(/)开头和结尾。
也可以使用一个完整的 URL。这是模块热替换所必需的。 这里是重点

publicPath: “http://localhost:8080/assets/”
bundle 可以通过 http://localhost:8080/assets/bundle.js 访问。


http://www.niftyadmin.cn/n/747285.html

相关文章

impala 连接查询优化策略知识(转载并我非原创,如有侵权,通知我立马删除)

impala 下连接查询优化策略思想 知识点&#xff1a;impala采用分布式查询hdfs文件系统上的parquet文件格式数据时&#xff0c;impala集群利用分布式查询技术&#xff0c;在多表连接的查询过程中难免有网络数据传输现象&#xff0c;这是有开销的好的查询策略会使得网络查询数据…

Spring RestTemplate 详解实践使用及拓展增强

RestTemplate 是什么&#xff1f; RestTemplate 是Spring封装的一个Rest风格http请求框架&#xff0c;底层可以切换成HttpClient OkHttp 或者Netty实现&#xff0c;用户只需要关心RestTemplate怎么用而不需要关心底层框架如何操作&#xff0c;使用RestTemplate不需要关心如何手…

impala为什么这么吃内存,转载网上说法(不是我原创,如有侵权,通知我立马删除)

CDH集群使用 Impala技术,在硬件层面上我们最需要关注的点就是: Impala处理的最大的表或者分区容量。因为 Impala要将数据全部读入内存才进行运算,我们必须要保证内存能够装载下所需要的表或者分区的数据。一般情况下,由于原有的集群是以基于磁盘的操作为主,需要为各数据节点计算…

解决JPA Native 查询不能使用投影(Projection)的问题 org.springframework.core.convert.ConverterNotFoundException:

问题原因 org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [com.example.IdsOnly]JPA版本 …

关于Linux中的yum命令

如果你使用的是ubuntu版本&#xff0c;可能会遇到如下情况&#xff1a; 这说明当前不支持yum命令。 解决版本&#xff1a; 第一条命令&#xff1a;apt-get install build-essential 第二条命令&#xff1a;apt-get install yum 打完收工&#xff0c;搞定&#xff01;&#x…

Spring Boot gradle 打包瘦身减少jar包体积 含demo

Spring Boot 1.5.x 打包 demo项目地址 https://gitee.com/youngboyvip/package-example 解决问题 Spring Boot 项目包太大上传服务器费时 优化原理 把占空间的 lib 目录移到外面去&#xff0c;打包时指定loader为PropertiesLauncher,启动时使用loader.path制定 lib 目录的位…

Thymeleaf 添加 baseUrl 指定根路径

转载自 www.youngboy.vip 原理 修改{}对应的处理类StandardLinkBuilder重写computeContextPath方法 修改步骤 step1: 重写 StandardLinkBuilder public static class BaseUrlLinkBuilder extends StandardLinkBuilder {private String baseUrl;public void setBaseUrl(Stri…

Cloudera Manager Server软件安装时注意事项之一 (转载自Cloudera Manager 官方文档Cloudera Manager Installation Gui)

转载自www.cloudera.com 通过上述内容可以看出Cloudera Manager Server软件是需要一个数据库来支撑它的,可用其自己内嵌的postgre sql数据库&#xff0c;也可以自己安装一个数据库如&#xff1a;mysql供Cloudera Manager Server(cm server)来使用 具体的格式参数说明&#xff…