问题
在用@vue/cli开发前端项目时, 可以通过
npm run serve启动一个本地服务,服务启动后会提示一个网址,在浏览器中输入该网址便可查看开发中的vue页面。
在将前端项目部署时,则会通过
npm run build将项目文件构建到一个目录,通常时dist目录,此目录下包含index.html以及相关的资源文件(js, css, img)等。
有时我们需要在本地对dist目录进行预览,但直接双击index.html打开文件,会发现页面是一片空白。F12查看控制台会发现报了“net:: ERR_FILE_NOT_FOUND”的错误。
原因
直接双击index.html打开文件,是以file://协议打开的,但默认构建时,一般是针对服务器构建的。
也就是说,dist 目录需要启动一个 HTTP服务器来访问 ,以 file:// 协议直接打开 dist/index.html 是不会工作的。
当然,如果在构建前,已经将 publicPath配置为了一个相对的值,那么构建后也是可以直接双击index.html打开文件进行本地预览的。
本地预览dist目录
知道了原因就好办了,可以有多种方法来在本地预览构建后的dist目录。在本地预览生产环境构建最简单的方式就是使用一个 Node.js 静态文件服务器,例如serve或http-server。
serve
安装serve
npm install -g serve运行serve提供服务
serve -s dist运行成功后,会提示服务的网址,一般是http://localhost:5000,访问这个网址,即可在本地预览构建后的dist目录内容。
http-server
安装http-server
npm install http-server –g运行http-server提供服务
hs dist运行成功后,会提示服务的网址,一般是http://127.0.0.1:8080,访问这个网址,即可在本地预览构建后的dist目录内容。
通过修改publicPath进行本地预览
修改项目根目录下的vue.config.js文件(如果没有就自行创建),在 vue.config.js 里设置publicPath为相对路径'./':
// vue.config.js
module.exports = {
publicPath: './',
};再运行npm run build重新构建项目。这时,直接双击dist目录下的index.html在浏览器打开文件就可以进行本地预览了。( 注:baseUrl 从Vue CLI 3.3 起已弃用,要使用publicPath )

