vue-cli3项目打包后,在自己搭的服务器上访问打包好的页面空白,处理方法
我用vue开发的一个小项目,项目开发出雏形,想打包一下放测试,但是我想放测试前自己检查一下经过npm run build打包生成的项目,在本地服务器能不能正常跑,于是,经过网上大哥的帮忙,写了个简易的koa服务器,将打包好的dist文件,放到了服务器上。
说一下我的dist文件的结构,dist/index.html dist/static 然后static目录下有打包好的js css img 文件,里面包含打包好的文件
再说一下koa服务器,服务器入口文app.js 监听的3000 端口, 用localhost:3000 就可以访问到
然后vue.config.js目前没有做任何配置 publicpath的默认值就为“/”
然后我再localhost:3000端口访问 结果页面白屏!!! network里资源状态码都是200 控制台有报错 如下:
Uncaught SyntaxError: Unexpected token <
蒙圈了有没有!!! 这是什么错。。。 经过我在网上的查找,估计是引用静态资源路径问题(因为网上很多,说白屏是静态资源路径引起的,然后报的相同的错)
网上也说到过很多,部署时需要配置vue.config.js里面的baseurl的值,但是我用的vue3.70版本 目前最新。官方让舍弃baseurl的配置,用publicpath来代替,于是,我hack了很多中配置方法,都不行。必须的知道哪里路径错了才行,好,现在来看看,空白页network里静态资源的引用路径,如下:
http://localhost:3000/static/css/app.9977a20f.css
发现问题了谬????!!!!
http://localhost:3000是我服务器的根 是相对于koa里app.js的路径 而和app.js同级的是dist文件夹,这里存放着index.html 和statick文件夹
按正常逻辑,这个域要访问到html页面 有两种办法 一是将dist这一层去掉,用上述路径可以访问到index.html和statick文件 二是:
http://localhost:3000/dist/statick/css/app.css 才能正常访问到,于是,我先试了第一种,把dist里的文件都拿了出来,放在了与app.js同级的目录下,然后页面正常显示了。
但是我觉的这不是最好的解决办法,我应该在vue中配置,将静态资源的访问路径前加上一个dist 也就是变成第二种访问路径,那么vue.config.js的publicpath该上场了
配置如下:
//基本路径(相对于服务器根目录 静态资源的相对路径)
publicPath: process.env.NODE_ENV === "production" ? "/haha/" : "/",
然后打包构建,放到服务器,好了,页面出来了!!!!明白了吗???
再来看看现在的引用app.css的路径
http://localhost:3000/haha/static2/css/app.9977a20f.css
这样就对了嘛。。
这也更好理解了publicpath的作用
另外想说一些不是太相关的知识(关于路径的)
. :一个点 表示一个级别的目录 ./ 表示当前目录下的目录 ../ 表示上级目录 ../../ 表示上级目录的上级目录 这对配置路径比较有帮助
另外 / 与 ./ 的区别
/ :表示跟目录 是绝对路径
./ :是相对路径 是相对于index.html的路径
具体看下边
/ 网站根路径 ./ 当前路径 ../ 上一级路径 ../../ 上两级路径 例如:本地静态网站 index页面地址 127.0.0.1/bootstrap_test/index.html在这里页面里面引入css和js路径应该怎么写呢? 1、 <link href="css/bootstrap.min.css" rel="stylesheet"> 实际请求地址为:127.0.0.1/bootstrap_test/css/bootstrap.min.css 找的是:和index.html 同级目录下的css文件里面的 2、 <link href="./css/bootstrap.min.css" rel="stylesheet"> 实际请求地址为:127.0.0.1/bootstrap_test/css/bootstrap.min.css 找得是:和index.html 同级里面的css文件里面的 3、 <link href="/css/bootstrap.min.css" rel="stylesheet"> 实际请求地址为:127.0.0.1/css/bootstrap.min.css 找的是根目录下面的css 4、 <link href="../bootstrap_test/css/bootstrap.min.css" rel="stylesheet"> 实际请求地址为:127.0.0.1/bootstrap_test/css/bootstrap.min.css 找得是:index.html上一级也就是和bootstrap_test处于同级里面的css文件里面的
vue-cli3项目打包后,在自己搭的服务器上访问打包好的页面空白,处理方法的更多相关文章
- 为何webpack打包后的文件要放在服务器上才能运行
为何会有此问: 在刚开始使用vue-cli时还不知道打包后的文件要在服务中才能运行,直接点开后发现页面白板,请教大神后得知要起一个服务才能运行起来,当时我脑子中的逻辑是这样的: 因为:js代码是由浏览 ...
- 「Vue」vue cli3项目打包为APP方法及坑点
1.执行npm run build之后生成dist文件夹 2.打开HBuilderX新建一个APP项目 3.把dist文件夹里的所有文件拷贝替换到APP文件夹下 4.打开manifest.json文件 ...
- vue cli3 项目配置
[转]https://juejin.im/post/5c63afd56fb9a049b41cf5f4 基于vue-cli3.0快速构建vue项目 本章详细介绍使用vue-cli3.0来搭建项目. 本章 ...
- vue cli3项目发布在apache www/vue目录下并配置history路由
注意:vue项目打包后默认是指向服务器的根路径(比如apache默认www目录是根路径,当然也可以修改),这种情况不需要做路径的配置,只需要做history配置,如果不是发布到根路径而是www/vue ...
- vue@cli3 项目模板怎么使用public目录下的静态文件,找了好久都不对,郁闷!
作为图片最好放在static目录下,但是vue@cli3没有static,网上都说放在public目录下,行,那就放吧,可问题是图片放了怎么使用 第一次尝试 肯定用绝对路径这就不说了,用相对路径,we ...
- vue项目 build之后发布到服务器index.html页面空白解决方法
第一部分 之前一直不太理解为什么要使用vue+webapck,还有在使用了vue-cli之后会用到后台,即vue-cli自动帮我们安装了express服务器,在本地服务器上运行,因为我们希望可以模拟在 ...
- iis7下url重写后,已存在的html不能访问了(未能执行URL)的解决方法
iis7下url重写后,原本存在的html不能访问了,未能执行URL(asp.net对真正的.html(但不符合重写规的)就不知道如何处理了),遇到类似情况的朋友可以参考下 当把.html的url ...
- vue cli3 项目优化
vue-cli3 Prefetch (官网内容) <link rel="prefetch"> 是一种 resource hint,用来告诉浏览器在页面加载完成后,利用空 ...
- vue cli3项目中使用qrcodejs2生成二维码
组件的形式创建 1.下载依赖 npm install qrcodejs2 2.创建一个.vue的组件放置代码(我创建的是qrcodejs2.vue) //template中的代码 <templa ...
随机推荐
- mysql+canal+kafka+elasticsearch构建数据查询平台
1. 实验环境 CPU:4 内存:8G ip:192.168.0.187 开启iptables防火墙 关闭selinux java >=1.5 使用yum方式安装的java,提前配置好JAVA_ ...
- charles 抓包 (二)
本文基于charles 抓包 https (1)中的配置完成. 1.移动设备上的网络请求 打开要调试的APP,请求就会先发送到Charles,然后验证是否允许访问. 当点击允许后,可以在Proxy - ...
- [C#]使用BackgroudWorker刷新UI延迟的解决方法
今天使用BackgroundWorker刷新UI发生延时现象,找了好久才发现AutoResetEvent可以解决,代码如下 private void BgWorker_ProgressChanged( ...
- asp.net 8 Request,Response,Server
Request成员: 1.Request.UrlReferrer 获取请求的来源,可以防盗链 Response.Write(Request.Url.ToString());//获取当前请求的URL地址 ...
- python之输入一系列整数输出最大值
在python学习中,我们经常会遇到:编写一个程序,输入若干整数或者是在一串字符中,输出最大值(数)的问题.那么在这里,我给出了几种常见的,也是几种比较常用的方法,希望能给大家的学习带来一定的帮助. ...
- vue进阶:vs code添加vue代码片段
如何设置? 选择或创建 配置代码 如何使用? 一.如何设置? 进入vs code主界面-->使用快捷键“ctrl + shift + p”: 如果你是使用Preferences:Configur ...
- cookie以一个或多个空格开头
作为一个整体,如果cookie以一个或多个空格开头,请用空格替换所有空格:如果cookie以一个或多个空格结尾,请用空格替换所有空格. 象征意义: \ S:空间,空间 +一个或多个 ^开始,^s,以空 ...
- OGG学习笔记03
OGG学习笔记03-单向复制简单故障处理 环境:参考:OGG学习笔记02-单向复制配置实例实验目的:了解OGG简单故障的基本处理思路. 1. 故障现象故障现象:启动OGG源端的extract进程,da ...
- LINUX中lrzsz软件的使用
安装lrzsz 可以在Linux 和 windows直接相互传文件 Linux无论ssh跳过去也可以sz rz打开图像进行传输文件 [root@master2 ~]# yum install lrzs ...
- mongodb启用auth,使用密码登录
更新操作: db.users.update({'currentVersion':3},{$set:{'currentVersion':5}}) 首先安装下载(略过) mongod 启动服务,有多重启动 ...