内容 JS 文件的 Blazor 服务器端 MIME 类型错误

Posted

技术标签:

【中文标题】内容 JS 文件的 Blazor 服务器端 MIME 类型错误【英文标题】:Blazor Server Side MIME type error for content JS file 【发布时间】:2022-01-22 10:41:00 【问题描述】:

我创建了一个基础程序集 BaseDll,它被我的主 Blazor 服务器端 MainBSSApp 编译为引用项目。

基本程序集包含一些 JS 函数,它们位于 BaseDll 程序集的 myJSFile.js 文件中(我已将它们添加到 BaseDll.wwwroot 文件夹中)。

所以我在MainBSSApp/Shared/_Host.cshtml 中添加了对我的JS 文件的引用(我实际上尝试了几个地方,结果总是一样 - 我现在在<head> 部分中拥有它):

<script src="_content/BaseDll/myJSFile.js"></script>

当我在标准 VS 版本 (Windows) 上执行 MainBSSApp 时,一切似乎都正常。现在我正在尝试使用 VS Code 迁移 Ubuntu 上的项目。 BaseDll 引用的视图以及服务运行良好。 但是,一旦我调用myJSFile.js 中定义的任何 JS 方法,我确实会收到一个错误,因为该函数未定义 - 就在此之前,我收到警告“来自“[...]/ 的脚本_content/BaseDll/myJSFile.js" 已加载,即使其 MIME 类型 ("text/html") 不是有效的 javascript MIME 类型。"

所以我尝试了this 修复但没有运气(我尝试了 777 和 705 许可,没有任何改变)...

我在这里做错了什么?

【问题讨论】:

MIME 错误可能是由中间件错误页面引起的......这是由文件不存在或路径错误引起的......所以 404 触发了 asp。 net 错误页面,为 HTML 类型。 (尝试使用浏览器的位置栏加载文件......应该确认......)也许试试这个路径?:“~/_content/BaseDll/myJSFile.js”或“./_content/BaseDll/myJSFile .js" @pcalkins 确实当我更改文件名时,它仍然说它发现错误的 MIME 类型,尽管该文件不存在。因此,我尝试了您的两个建议,在这两种情况下我都得到了同样的错误。我的假设是该文件可能不会被添加到 dll 中 - 目前尚不清楚我应该如何通过 VS 代码使其成为“内容文件” - 在 VS 中它被列为“构建操作:内容” - “请勿复制”但我在基础项目(即 *.sln 或 *.csproj 文件)中找不到文件名的任何引用 - 也许这就是原因?关于修复它的任何想法? 不熟悉 blazor 的东西...不过,我认为您可以将其捆绑在 webassembly 中。这可能会解决路径问题。 是的 - 这就是重点 - 如果我将文件添加到 MainBSSApp\wwwroot 它会自动复制来自 wwwroot 的文件......但是从基本程序集添加它时不知何故它不起作用.. .! 【参考方案1】:

解决方案确实是在_content之前添加./

<script src="./_content/BaseDll/myJSFile.js"></script>

感谢@pcalkins 和docs...

【讨论】:

以上是关于内容 JS 文件的 Blazor 服务器端 MIME 类型错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Blazor 中配置基于策略的授权

在已发布主机上引用 Blazor 服务器端中的静态文件

如何在Blazor服务器端处理窗口或主体滚动?

Blazor替代JS window.location.href

以正确的方向显示图像 - Blazor 服务器端

IIS 中的 Blazor 服务器端下载问题