NodeJS Google云应用引擎的MIME类型问题

lc8prwob  于 2023-02-03  发布在  Node.js
关注(0)|答案(2)|浏览(166)

我在谷歌云应用引擎上托管了一个NodeJS应用程序。利用Vite & Vue 3和Vite的原生SSR。目前,该应用程序在谷歌子域中运行良好:.appspot.com。但是,当我尝试使用我Map到ie的域时:domain.com,它显示此错误:
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec.
有时它似乎是随机工作的,然而,大多数时候它会产生mime类型的错误。JavaScript和CSS文件都会发生这种情况,因为它们是包含HTML内容的文件。

类似问题Mismatched MIME type with Google App Engine

这是我第一次张贴在这里,所以请让我知道,如果有什么我需要补充。

一些注解

  • 我注意到mime类型问题只发生在索引页面(如domain.com/),而不发生在像www.example.com这样的页面domain.com/test。
  • 运行生产服务器(构建和服务)没有任何问题
  • 由于我使用的是Vue路由器,我注意到首先将页面加载为domain.com/test,然后再转到domain.com是有效的,所以当vue呈现索引页面时不存在mime问题。
  • 我也使用express.static来提供静态文件,而不使用应用引擎处理程序配置。我试过从express切换到从应用引擎提供静态文件,但效果也不太好。
    编辑经过一些调查,似乎没有找到这些文件。我将假设这是Google Cloud如何获取文件的问题。将继续更新。
ivqmmu1c

ivqmmu1c1#

我还发现今天我的应用在使用 express 下载PDF预览时停止提供正确的内容类型标头。

return res.writeHead(200, {
            'Content-Disposition': `inline;filename=filename.pdf`,
            'Content-Type': 'application/pdf'
            }).send();

我得到text/html时,请求它,无论它是完全罚款在本地调试机器,它实际上昨天工作。可能,这是一些更新的应用程序引擎方面?

wz3gfoph

wz3gfoph2#

我似乎已经解决了这个问题,这是谷歌云缓存“索引”路径的问题。

res
            .status(200)
            .set({ "Content-Type": "text/html" })
            .set({
                etag: false,
                lastModified: false,
            })
            .end(HTML);

^我现在提供路线服务时使用了这段代码,这样可以确保google cloud不会缓存页面并试图获取旧的css/js文件。

参考Google App Engine, index.html cached after deploy in express/react app

相关问题