bug出现背景:项目中需要正在网页中插入swf文件播放flash插件
代码如下:
<template>
<div class="out-content" style="background-color: #fff;">
<p class="out-content-title"><database-outlined style="transform: translateY(4px);margin-right: 5px;" />绘制流程图</p>
<div style="height: 92%; padding:1%">
<object id="presentation" width="100%" height="630px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="/src/assets/WFDesigner1.swf" />
<param name="quality" value="high" />
<param name="allowFullScreen" value="true" />
<param name="wmode" value="Opaque" />
<embed :src="state.serverUrl" quality="high" width="100%" height="100%" name="presentation" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" allowFullScreen="true" />
</object>
</div>
</div>
</template>
<script setup lang="ts">
// data数据
const state = reactive(new bpmRuleStateParam());
// 获取图片url
const getserverUrl = async () => {
try {
const data = await getServerUrl();
if (data.code === 200) {
state.serverUrl = "/assets/swf/WFDesigner.swf?url="+ data.data +"messagebroker/amf"
}
} catch (error) {
return Promise.reject(error);
}
};
getserverUrl();
</script>
结果:运行起来后发现页面是空白的,并且在控制台发现 404 Not Found
我看了一下/assets/swf/WFDesigner.swf地址,在我项目夹中是有的,路径也没有问题,可为什么就是找不到页面呢?
后来,我突然想到了,vue3中引入图片的时候也会出现在这种情况,找不到对应图片,原因就是途径的问题,那咱们这里报错应该也是路径的问题!
解决方法:将swf文件放入到了静态资源-public文件中再在对应页面引入后就可以正常显示了!
代码如下:
(1)将swf文件放置在public文件下
(2)打开vue.config.js文件,静态资源路径process.env.BASE_URL:
// 引入
const { defineConfig } = require('@vue/cli-service');
// 导出
module.exports = defineConfig({
publicPath: process.env.BASE_URL,
})
(3)定义变量获取静态资源路径process.env.BASE_URL并拼接:
<embed :src="state.serverUrl">
let serveUrls = [`${process.env.BASE_URL}swf/WFDesigner.swf`];
state.serverUrl = serveUrls + "?url="+ data.data +"messagebroker/amf"
这样就可以正常显示swf下的文件啦!