为什么我加载了“df.worker.min.js”,即使它的 MIME 类型(“text/html”)不是有效的 JavaScript MIME 类型”

Jør*_*sen 6 javascript pdfjs parceljs

我尝试在一个小型打字稿应用程序中使用 pdfjs,将parceljs 作为捆绑器,但是当我加载工作人员时:

pdfjsLib.GlobalWorkerOptions.workerSrc = '../../node_modules/pdfjs-dist/build/pdf.worker.min.js';
Run Code Online (Sandbox Code Playgroud)

我在 Firefox 控制台中收到此错误:

pdf.worker.min.js” was loaded even though its MIME type (“text/html”) is not a valid JavaScript MIME type
Run Code Online (Sandbox Code Playgroud)

并且没有加载工人。

如果我像这样加载工人:

pdfjsLib.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${(pdfjsLib as any).version}/pdf.worker.min.js`;
Run Code Online (Sandbox Code Playgroud)

一切正常。

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

Sru*_*ddy 2

发生这种情况是因为内容类型响应标头错误。

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

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

它应该工作正常。

更新(2019 年 4 月 11 日):

我假设您正在使用 http-server 的 Express 框架。可以使用中间件设置内容类型。

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

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