vue2打包后图片资源无法加载的问题处理

在前端开发中,遇到img标签的src和css背景图片打包上线后无法加载的问题。解决方案包括修改config/index.js的assetsPublicPath为'./',以及在build/utils.js中为fallback添加'../../'作为publicPath。这些调整能确保图片路径正确,避免资源加载失败。

常见问题,给自己做下记录

问题1:img标签src引用的图片打包上线后无法加载

解决方案:config/index.js 中的 assetsPublicPath值改成 ./ (比默认多一个.)

 

问题2:css中的背景图片打包上线后无法加载

解决方案:build/utils.js 中的 fallback: 'vue-style-loader' 下一行加上 publicPath: '../../'(fallback那行检查末尾有没有英文逗号,没有加上)

 

Vue3 项目中,如果打包后的资源路径在 Electron 应用中加载失败,通常是由于打包工具的路径配置与 Electron 的加载机制不匹配所导致。Electron 使用的是本地文件系统路径,而 Web 应用通常使用 HTTP 协议加载资源。在 Electron 中,`file://` 协议可能会导致资源加载失败,尤其是在打包后。 ### 配置 Vue 项目以支持 Electron 加载 为了确保 Vue3 项目打包后的资源路径能够在 Electron 中正确加载,可以通过修改 `vue.config.js` 文件来调整资源加载协议。具体来说,可以使用 `customFileProtocol` 选项来设置资源加载的路径前缀。例如,将资源路径设置为 `./` 可以确保 Electron 从当前目录加载资源,避免路径错误问题 [^2]。 ```javascript const { defineConfig } = require("@vue/cli-service"); module.exports = defineConfig({ transpileDependencies: ["vuetify"], pluginOptions: { electronBuilder: { customFileProtocol: "./", }, }, }); ``` 通过这种方式,打包后的资源路径将被正确解析,避免了因路径错误导致的资源加载失败问题。 ### 配置 Electron 主进程以支持本地资源加载 除了 Vue 项目的配置之外,还需要确保 Electron 的主进程配置正确。在 Electron 的主进程中,可以通过设置 `webPreferences` 来启用 `nodeIntegration` 和上下文隔离机制,以确保 Vue3 应用能够正确加载本地资源。 ```javascript const { app, BrowserWindow } = require('electron'); function createWindow() { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, contextIsolation: false, }, }); win.loadFile('dist/index.html'); } app.whenReady().then(() => { createWindow(); app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } }); }); app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); ``` 上述代码中,`nodeIntegration` 被设置为 `true`,以确保 Vue3 应用能够访问 Node.js API。同时,`contextIsolation` 被设置为 `false`,以避免上下文隔离机制导致的资源加载问题。 ### 使用相对路径确保资源加载兼容性 在 Vue3 项目中,确保使用相对路径来引用资源文件,例如图片、音频等。这样可以确保资源路径在 Electron 中正确解析。例如,在 Vue3 项目中引入音频资源时,可以使用相对路径: ```html <template> <div> <button @click="stopPlay">停止播放</button> <Music file_name="picture.wav" ref="picture"></Music> </div> </template> <script> import Music from "@/components/Music"; export default { components: { Music, }, mounted() { this.$refs.picture.play(); }, methods: { stopPlay() { this.$refs.picture.pause(); }, }, }; </script> ``` 通过使用相对路径,可以确保资源在 Electron 中正确加载,避免因路径错误导致的资源加载失败问题。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值