为什么我会得到一个“;df.worker.min.js”;即使其MIME类型(“;text/html”;)不是有效的JavaScript MIME类型,也已加载;

为什么我会得到一个“;df.worker.min.js”;即使其MIME类型(“;text/html”;)不是有效的JavaScript MIME类型,也已加载;,javascript,pdfjs,parceljs,Javascript,Pdfjs,Parceljs,我尝试在一个小型typescript应用程序中使用pdfjs,将parceljs作为绑定器,但当我加载worker时: pdfjsLib.GlobalWorkerOptions.workerSrc = '../../node_modules/pdfjs-dist/build/pdf.worker.min.js'; 我在Firefox控制台中遇到以下错误: pdf.worker.min.js” was loaded even though its MIME type (“text/html”)

我尝试在一个小型typescript应用程序中使用pdfjs,将parceljs作为绑定器,但当我加载worker时:

pdfjsLib.GlobalWorkerOptions.workerSrc = '../../node_modules/pdfjs-dist/build/pdf.worker.min.js';
我在Firefox控制台中遇到以下错误:

pdf.worker.min.js” was loaded even though its MIME type (“text/html”) is not a valid JavaScript MIME type
并且工作进程未加载

如果我这样加载工人:

pdfjsLib.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${(pdfjsLib as any).version}/pdf.worker.min.js`;
一切正常


我已经查看了错误的MDN描述,听起来像是服务器端的事情,那么这是不是包裹服务器的一个限制,是否有解决方法?

这是因为错误的内容类型响应头造成的

您的服务器正在响应一个内容类型为“text/html”的javascript文件,这是错误的

将内容类型更改为“text/javascript”

它应该很好用

更新(2019年4月11日):

我假设您正在使用http服务器的express framework。 可以使用中间件设置内容类型

app.use('*.js', (req, res, next) => {
    res.set('Content-Type', 'text/javascript')
    next();
})

将其添加到静态文件服务中间件之前。

检查Web服务器上该.js文件的文件权限

app.use('*.js', (req, res, next) => {
    res.set('Content-Type', 'text/javascript')
    next();
})
我遇到了一个类似的问题,加载我的一个.js文件失败,Firefox打印了以下消息:

已加载“”中的脚本,即使其MIME类型(“text/html”)不是有效的JavaScript MIME类型

加载源为“”的
失败

所有其他的.js文件都是用正确的内容类型“application/javascript”发送的,但这个文件是用“text/html”发送的


问题是,在将文件传输到我的Web服务器(使用FileZilla)时,文件的权限设置为600将文件权限设置为705修复了此问题。现在发送的.js文件的内容类型正确,Firefox消息也不见了。

我在Google上搜索了一下se,看能否找到如何更改现有.js文件内容类型的方法,但没有成功。我遇到问题的文件是pdf.worker.min.js,它是Mozilla PDFJS项目预构建的一个缩小文件。你能帮我修改缩小的.js文件的内容类型吗?谢谢你的回答,但我不明白。我从firebase托管服务我的应用程序,它工作正常。我还有一个项目,我使用webpack,webpack开发服务器也可以毫无问题地为pdf.worker.min.js提供服务。现在,在一个新的较小的项目中,我选择使用Parcel,因为它似乎比webpack容易得多,但Parcel development server给了我这个问题,它无法提供pdf.worker.min.js。所以我的问题是包裹。我尝试了“chmod 705 build/”(build是包含pdf.worker.min.js的文件夹),但没有任何帮助。您是否检查了文件的权限是否已实际更改?要递归更新子文件夹和所有文件的权限,需要将参数“-R”添加到chmod。不,“chmod-R 705 build/”也没有帮助。