Vue项目打包后不能正常显示页面

项目场景:

通过 Vue CLI 创建的 vue 项目,编写完项目后,通过 npm run bulid 对项目进行打包,再把打包得到的内容(dist文件夹)交给后端部署到服务器上。


问题描述:

对 vue 项目打包后,发现 dist文件中的 index.html 在浏览器中打开后页面内容无法显示,部署到服务器也一样不行,而 vue 项目在本地服务器运行时,页面是正常的。

本地服务器运行的首页:
在这里插入图片描述
打包后dist文件夹中的首页:
在这里插入图片描述
没看错,是真的什么内容都没有


原因分析:

vue 项目中缺少了 vue.config.js 文件。
在这里插入图片描述
vue-cli3 之后创建的时候并不会自动创建 vue.config.js,因为这个是个可选项,所以一般都是需要修改 webpack 的时候才会自己创建一个 vue.config.js 。


解决方案:

在项目根目录手动创建一个 vue.config.js 。
一个 vue-config.js 较完整的字段属性介绍:

module.exports = {

        // 选项
    
        //  基本路径
    
        publicPath: "./",
    
        //  构建时的输出目录
    
        outputDir: "dist",
    
        //  放置静态资源的目录
    
        assetsDir: "static",
    
        //  html 的输出路径
    
        indexPath: "index.html",
    
        //文件名哈希
    
        filenameHashing: true,
    
        
    
        lintOnSave: true,
    
        //  是否使用带有浏览器内编译器的完整构建版本
    
        runtimeCompiler: false,
    
        //  babel-loader 默认会跳过 node_modules 依赖。
    
        transpileDependencies: [ /* string or regex */ ],
    
        //  是否为生产环境构建生成 source map?
    
        productionSourceMap: true,
    
        //  设置生成的 HTML 中 <link rel="stylesheet"> 和 <script> 标签的 crossorigin 属性。
    
        crossorigin: "",
    
        //  在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 标签上启用 Subresource Integrity (SRI)。
    
        integrity: false,
    
        //  调整内部的 webpack 配置
    
        configureWebpack: () => {}, //(Object | Function)
    
        chainWebpack: () => {},
    
        // 配置 webpack-dev-server 行为。
    
        devServer: {
    
            open: process.platform === 'darwin',
    
            host: '0.0.0.0',
    
            port: 8080,
    
            https: false,
    
            hotOnly: false,
    
            // 查阅 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli/cli-service.md#配置代理
    
            proxy: {
    
                '/api': {
    
                    target: "http://app.rmsdmedia.com",
    
                    changeOrigin: true,
    
                    secure: false,
    
                    pathRewrite: {
    
                        "^/api": ""
    
                    }
    
                },
    
                '/foo': {
    
                    target: '<other_url>'
    
                }
    
            }
        }
    
    }

一般的小项目可能不需要上面这么复杂,按照需求来设置,按照上面的项目(初始化的项目),手动添加一个 vue-config.js 如下:

module.exports = {

        // 选项
    
        //  基本路径
    
        publicPath: "./",
    
        //  构建时的输出目录
    
        outputDir: "dist",
    
         //  放置静态资源的目录
    
        assetsDir: "static",
    
        //  html 的输出路径
    
        indexPath: "index.html",
    
        //文件名哈希
    
        filenameHashing: true,
    
        
    
        lintOnSave: true,
    
        //  是否使用带有浏览器内编译器的完整构建版本
    
        runtimeCompiler: false,
    
        //  babel-loader 默认会跳过 node_modules 依赖。
    
      
        // 配置 webpack-dev-server 行为。
    
        devServer: {
    
            open: process.platform === 'darwin',
    
            host: '0.0.0.0',
    
            port: 8080,
    
            https: false,
    
            hotOnly: false,
    
            // 查阅 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli/cli-service.md#配置代理
    
            proxy: {
    
                '/api': {
    
                    target: "http://app.rmsdmedia.com", // 项目用到的域名
    
                    changeOrigin: true,
    
                    secure: false,
    
                    pathRewrite: {
    
                        "^/api": ""
    
                    }
    
                },
    
                '/foo': {
    
                    target: '<other_url>'
    
                }
    
            }
        }
    
    }

项目打包后,输出的项目即可正常显示:
在这里插入图片描述

### Vue3 项目打包页面空白的原因及解决方案 #### 原因分析 当遇到 Vue3 项目打包页面显示为空白的情况时,通常有几种常见原因: - **路径配置错误**:打包后的静态文件路径可能正确,特别是在 `publicPath` 配置当的情况下[^1]。 - **环境变量问题**:某些情况下,生产环境中使用的环境变量与开发时一致可能导致应用无法正常加载资源[^2]。 - **依赖库版本冲突**:同版本的依赖库之间可能存在兼容性问题,在构建过程中未能妥善处理这些差异也会引发此类现象[^3]。 #### 解决方案 ##### 修改 `vue.config.js` 如果项目中存在自定义配置,则需确保 `outputDir`, `assetsDir` 和 `publicPath` 设置合理。对于大多数场景而言,默认设置即可满足需求;但如果部署到子目录下,则应调整 `publicPath` 的值为相对路径 `/your-sub-path/` 或者绝对 URL 地址。 ```javascript module.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/your-sub-path/' : '/', }; ``` ##### 检查 HTML 文件引入顺序 确认 `index.html` 中 `<script>` 标签的位置是否恰当,特别是异步加载脚本时要保证其放置于 DOM 结构之后以便能够正确挂载应用程序实例。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>App</title> <!-- Other meta tags --> </head> <body> <div id="app"></div> <script src="/path/to/chunk-vendors.js"></script> <script src="/path/to/app.js"></script> </body> </html> ``` ##### 更新 Webpack 插件或 CLI 版本 有时旧版工具链中的 bug 可能会影响最终输出效果,尝试升级至最新稳定版本可以有效规避潜在风险[^4]。 ```bash npm install @vue/cli-service@latest --save-dev ``` ##### 清理缓存并重新安装依赖包 执行如下命令清除本地 node_modules 缓存,并重装所有必要的 npm 包以排除由于局部环境因素引起的问题。 ```bash rm -rf node_modules/.cache/ rm package-lock.json yarn.lock npm cache clean --force npm install ``` ##### 浏览器开发者工具排查 利用浏览器自带的开发者工具(F12),切换到 Network 标签下观察是否有请求失败的情况发生,同时注意 Console 输出的信息提示,这对于定位具体问题是很有帮助的。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值