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 ...
随机推荐
- Pycharm 加载pygame解决方案
按照<python编程从入门到实践>上的教程下载了pygame的whl文件进行安装, 在cmd窗口里import pygame提示无错误,在IDEL里程序也能正常运行, 但是pycharm ...
- JS基础_条件运算符
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JavaScript例子1-给网页中所有<p>元素添加onclick事件
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- O064、NFS Volume Provider(Part III)
参考https://www.cnblogs.com/CloudMan6/p/5702199.html 今天我们将前一小节中创建的 nfs-vol-xx attach 到Instance c1 上, ...
- arcgisJs之featureLayer中feature的获取
arcgisJs之featureLayer中feature的获取 在featureLayer中source可以获取到一个Graphic数组,但是这个数组属于原数据数组.当使用 applyEdits修改 ...
- PHP之配置
1) 错误日志 一.相关配置 需要将php.ini中的配置指令做如下修改: . error_reporting = E_ALL ;将会向PHP报告发生的每个错误 . display_errors = ...
- pyqt5 中的addStretch
一直对addStretch感觉怪怪的,直到看见了下面这段话: addStretch()函数用于在控件按钮间增加伸缩量, 伸缩量的比例为1:1:1:6,意思就是将控件以外的空白地方按设定的比例等分为9份 ...
- SVN主从备份
SVN主从备份 两套环境:192.168.67.63(主SVN) 192.168.67.60(从SVN) 1.主环境上已经装好SVN并且存在数据仓库/home/svndata在从环境上,新建一/hom ...
- ARM cortex-version
cortex-M\A\R M microcontroller 微控制器 就是单片机 A application 应用及处理器 就是手机平板电脑等 R realtime 实时处理器 响应 ...
- ubuntu16.04下NVIDIA GTX965M显卡驱动PPA安装
禁用nouveau驱动 Ubuntu系统集成的显卡驱动程序是nouveau,我们需要先将nouveau从linux内核卸载掉才能安装NVIDIA官方驱动.将nouveau添加到黑名单blacklist ...