前言
今天代码提测了,好家伙,整出来好多bug,有pdfjs使用的bug,也有pop导致的bug
pop的bug
这个是我太不小心了,这里我就简单描述一下,大家以后自己别犯错就行
差不多就是我这样写了一个全局常量
1 | export const TABLE_COLUMN=[ |
然后我在俩个不同的.vue中需要调用他,其中一个.vue文件不需要Action,然后另外一个需要Action
所以我在那个不需要Action的.vue中自作聪明用了TABLE_COLUMN.pop()
,我想你看到这里也知道了问题,没错,我把这个全局常量给改掉了,导致我在后续另外一个需要Action的.vue中引入TABLE_COLUMN没有了Action,当我打开不需要Action的那个.vue文件的页面次数越多,就会让TABLE_COLUMN他的元素越来越少,其实我们都知道pop会改变原数组,这个错误我一不小心还是犯了,然后解决方案也很简单,在不需要Action的.vue文件中[...TABLE_COLUMN].pop()
。
public文件夹问题
我之前不说过把pdfjs放在public文件夹下面吗,然后我把我的代码发布了,因为当时我的地址用的/xxxxx
,因为public本地是可以这样的,但是我发到线上去,因为我打包出来后的文件夹是有自己的名字的,比方说,我定义为admin
,那么实际上,这个pdfjs文件需要引用的地址是/admin/xxxxx
,而不是/xxxx
,因此我们最好在.env
,.env.develop
(本地和线上)文件做一个区分,这里以.env
和.env.develop
作为例子,这里如果是用这个方式的话,俩边的地址你都可以定义为
1 | VITE_PDF_URL_PREFIX = `/xxxxx` |
然后在调用的地方
1 | const prefixUrl=import.meta.env.VITE_PDF_URL_PREFIX |
pdfjs报错
错误差不多是这样Failed to load module script: Expected a JavaScript module script but the server responded
错误原因就是这样的
MIME 类型设置不正确: 服务器返回的文件 MIME 类型不正确。浏览器期望模块脚本的 MIME 类型为 application/javascript。如果服务器返回的 MIME 类型不是这个,浏览器会拒绝加载它,并显示这个错误,本质就是mjs文件在服务器中被识别成了application/octet-stream
,我们需要在服务器的ngnix进行配置
nginx配置修改
在nginx的默认mime.types文件中没有为mjs扩展名设置条目,这意味着它将被作为application/octet-stream而不是application/javascript进行服务。可以通过在服务器、http或location块中显式包含mime.types并添加一个types块来设置mjs文件的MIME类型和文件扩展名:
1 | server |
或者在springboot中加上一个东西
1 | spring.servlet.mime-mapping.mjs=application/javascript |
结语
今日份写bug小能手-就是我,债见~