vue3项目打包发布到服务器后访问页面显示空白怎么解决

发布时间:2023-03-20 15:02:34 作者:iii
来源:亿速云 阅读:209

这篇“vue3项目打包发布到服务器后访问页面显示空白怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue3项目打包发布到服务器后访问页面显示空白怎么解决”文章吧。

vue3项目打包发布到服务器后访问页面显示空白

1、处理vue.config.js文件中的publicPath

处理如下:

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
    publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
    outputDir: 'dist',
    indexPath: 'index.html',
    lintOnSave: false,
    transpileDependencies: true,
})

2、处理router文件夹中的index.js文件

处理如下:采用修改后的部分

import { createRouter, createWebHistory, createWebHashHistory  } from 'vue-router';
import routes from "./routes";

const router = createRouter({
    //history: createWebHistory(process.env.BASE_URL),//默认时
    history: createWebHashHistory(process.env.BASE_URL),//修改后
    routes
})
export default router;

解决以上这两步,就解决vue3项目打包发布到服务器后访问页面显示空白问题

在打包项目时显示空白页问题和一些解决思路

在项目开发完毕后我们就会进行打包

npm run build

打包生成的文件会在dist文件夹中

但有时候打开index.html 会出现空白页面

vue3项目打包发布到服务器后访问页面显示空白怎么解决

接下来我们从几个方面来进行分析:

一、打包时整体资源路径

根据实际情况要判断    是/   还是 ./ 

vue3项目打包发布到服务器后访问页面显示空白怎么解决

在vue-ui 里配置:

vue3项目打包发布到服务器后访问页面显示空白怎么解决

在vue.config.js里配置:

module.exports = {
//基本路径 文件打包后放的位置
publicPath:‘./',
 
//默认输出文件夹为dist,填入的名字为打包后的文件名
outputDir:‘name',
 
// 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。资源放的目录
assetsDir: “./static”,
 
// 指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径 index的路劲和名字
indexPath: ‘./index.html',
 
//打包后是否生成map文件,map文件能看到错误代码位置,设置为false不生成map文件,打包体积缩小
productionSourceMap: false,
}

二、路由模式

是哈希 还是 历史模式 

推荐 哈希模式 兼容性更高 #以后路径不会发送给服务器 避免一些错误

const router = new VueRouter({
  routes,
  mode:'hash',
})

三、开发和生产环境切换的原因

因为我们开发环境时

npm run serve 模拟的是本地服务器

打包成dist文件夹 导致端口等一些变化 当中的内容请求不过来 所以导致空白页

我们可以简单部署本地服务器让 dist 跑起来

创建文件夹

开启gzip 减小文件体积 使传输速度更快

使用PM2 管理应用

vue3项目打包发布到服务器后访问页面显示空白怎么解决

app.js:

const express = require('express')
const app = express()
 
const compression = require('compression')
 
app.use(compression()) // 一定要把这一行写在 静态资源托管之前
app.use(express.static('./dist'))
 
app.listen(80,()=> {
  console.log('server running at http://127.0.0.1')
})

在这里能跑起来 dist 给后端大哥也不成问题了

四、执行构建之前可以进行一些优化

在 vue.confjg.js 中分别设置 本地服务 和 构建 的入口文件

module.exports = {
  chainWebpack:config=>{
    //发布模式
    config.when(process.env.NODE_ENV === 'production',config=>{
      //entry找到默认的打包入口,调用clear则是删除默认的打包入口
      //add添加新的打包入口
      config.entry('app').clear().add('./src/main-prod.js')
 
      //使用externals设置排除项
      config.set('externals',{
        vue:'Vue',
        axios:'axios',
        lodash:'_',
        echarts:'echarts',
        nprogress:'NProgress',
      })
 
// 在项目的根目录创建一个vue.config.vue文件,添加上 chainWebpack,修改args里的参数配置,重新返回就可以  这里是 判断是开发版本 还是 发布版本
      config.plugin('html').tap(args => {
        args[0].isProd = true
        return args
      })
 
    })
    //开发模式
    config.when(process.env.NODE_ENV === 'development',config=>{
      config.entry('app').clear().add('./src/main-dev.js')
 
      config.plugin('html').tap(args => {
        args[0].isProd = false
        return args
      })
    })
 
  }
}

以上就是关于“vue3项目打包发布到服务器后访问页面显示空白怎么解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

推荐阅读:
  1. 如何用40行代码把Vue3的响应式集成进React做状态管理
  2. Vue3的响应式和以前的区别

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vue3 服务器

上一篇:echarts图表y轴数据间隔过大问题如何解决

下一篇:php插入数据库发生乱码的原因和解决方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》