0

0

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

PHPz

PHPz

发布时间:2023-05-17 08:19:37

|

9593人浏览过

|

来源于亿速云

转载

    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 跑起来

    创建文件夹

    Google Antigravity
    Google Antigravity

    谷歌推出的AI原生IDE,AI智能体协作开发

    下载
    • 在文件夹终端 初始化 npm npm init -y

    • 安装 express  npm i express -S

    • 把dist 复制到新文件夹中

    • 创建 app.js 写代码

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

    • 安装对应包  npm install compression -p

    • 导入包 const compression = require('compression')

    • 启用中间件 app.use(compression())

    使用PM2 管理应用

    • 安装 npm i pm2 -g

    • 启动项目:pm2 start .\app.js --自定义名称

    • 查看运行项目 pm2 ls

    • 重启项目 pm2 restart 自定义名称(ID)

    • 停止项目 pm2 stop 自定义名称(ID)

    • 删除项目 pm2 delete 自定义名称(ID)

    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
          })
        })
     
      }
    }
    • main-dev.js 开发版本总入口

    • main-prod.js 发布版本总入口 在这里根据开发版本改进 删除不需要的依赖项 改用cdn引入、配置路由懒加载的插件......

    相关专题

    更多
    什么是中间件
    什么是中间件

    中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

    175

    2024.05.11

    Golang 中间件开发与微服务架构
    Golang 中间件开发与微服务架构

    本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

    212

    2025.12.18

    html版权符号
    html版权符号

    html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    591

    2023.06.14

    html在线编辑器
    html在线编辑器

    html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

    638

    2023.06.21

    html网页制作
    html网页制作

    html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

    458

    2023.07.31

    html空格
    html空格

    html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

    240

    2023.08.01

    html是什么
    html是什么

    HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

    2850

    2023.08.11

    html字体大小怎么设置
    html字体大小怎么设置

    在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

    500

    2023.08.11

    桌面文件位置介绍
    桌面文件位置介绍

    本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

    0

    2025.12.30

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Node.js 教程
    Node.js 教程

    共57课时 | 7.6万人学习

    ASP 教程
    ASP 教程

    共34课时 | 3万人学习

    Python 教程
    Python 教程

    共137课时 | 6.9万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号