我试图建立我自己的角形8应用程序,从一个ASP.Net核心网站内部服务(所以我不需要处理跨站点脚本,或有两个(子)域,或认证问题。
我在VS代码中构建了一个web应用程序,并将其编译到了我的AspNetCore3.0项目中的文件夹wwwroot/app (我可以使用ng serve运行这个应用程序)。
我在Startup ConfigureServices()中添加了这个
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "wwwroot/app";
});把这个放在Configure()里
app.UseSpa(spa => {});这在一定程度上有效。当我加载asp.net项目时,角度应用程序开始加载。但是控制台中充满了(生成的index.html中指定的每个文件一个):
由于不允许的MIME类型(“text/html”),
从“https://localhost:5001/runtime.js”加载模块被阻塞。
由于不允许MIME类型(“text/html”),从“https://localhost:5001/polyfills.js”加载模块被阻塞。
由于不允许MIME类型(“text/html”),从“https://localhost:5001/vendor.js”加载模块被阻塞。
由于不允许MIME类型(“text/html”),从“https://localhost:5001/styles.js”加载模块被阻塞。
由于不允许MIME类型(“text/html”),从“https://localhost:5001/main.js”加载模块被阻塞。
据我所知,当文件被“编译”时,角cli没有包含mime类型,因此web浏览器不关心它们。
有角的人并不认为这是一个错误/错误,并且已经解决了一个与此相关的问题(尽管这个行为与Range7是如何做到的):https://github.com/angular/angular-cli/issues/10325
读到这个问题,How to add Mime Types in ASP.NET Core,我想我也许能做这样的事情:
var provider = new FileExtensionContentTypeProvider();
provider.Mappings[".js"] = "application/javascript";
provider.Mappings[".html"] = "text/html";
provider.Mappings[".ico"] = "image/vnd.microsoft.icon";
var statFilesOptions = new StaticFileOptions
{
ContentTypeProvider = provider
};
app.UseSpa(spa =>
{
spa.Options.DefaultPageStaticFileOptions = statFilesOptions;
});若要向文件中添加mime/类型,请执行以下操作。但这一点也没有用。
关于如何在不编辑生成的文件的情况下修复文件,还有其他想法吗?
发布于 2020-01-26 10:28:35
这个问题完全不是我所期望的那样。asp.net核心应用程序实际上是为所有请求返回index.html文件,因为它找不到javascript文件。因此,这个错误实际上是正确的。
将index.html中的index.html更改为<base href="/app/">部分解决了这个问题,因为它现在知道在我放置它们的应用文件夹中查找文件,但是重新加载停止工作(因为url是错误的)。
我的解决方案是将角构建的输出文件夹设置为asp net核心项目中/wwwroot/的根。现在一切都成功了。
发布于 2022-07-14 12:49:12
Emad的评论是完全正确的。我花了两天时间在.net 6主机上修改.net,用remoteEntry.js做了一个角度Webpack Mfe:
未能加载模块脚本:需要一个JavaScript模块脚本,但服务器响应时使用了MIME类型的"text/html“。根据HTML规范,对模块脚本实施严格的MIME类型检查。main.js:1 polyfills.js:1
这是index.html的尾声。应该只有/app。
谢谢你,Emad!
https://stackoverflow.com/questions/59912920
复制相似问题