为什么来自 angular 项目的 javascript 文件没有被识别为 javascript?

Why are javascript files from angular project not being identified as javascript?

我一直在努力将 Angular 7 项目集成到 ASP.NET Core MVC 项目中,但最近 运行 遇到了一个问题。在测试解决方案时,我 运行 遇到了 Edge 出现 HTTP 404 错误的问题。在 Firefox 上测试时,Javascript 控制台给出一条警告消息,内容为 Javascript files are being identified as HTML files。 我采取的唯一行动是构建 Angular 项目,将 Angular 项目复制到 ASP.NET Core 项目的子文件夹中,然后将构建的文件添加到 razor 文件中。剃须刀文件:

@{
    ViewData["Title"] = "Home Page";
}

<h1>This is the Index page</h1>
@section Scripts{
    <script src="~/ClientApp/dist/frontend/runtime.js"></script>
    <script src="~/ClientApp/dist/frontend/polyfills.js"></script>
    <script src="~/ClientApp/dist/frontend/styles.js"></script>
    <script src="~/ClientApp/dist/frontend/vendor.js"></script>
    <script src="~/ClientApp/dist/frontend/main.js"></script>
}

谁能解释一下我哪里出错了?

也许您需要像这样 write rules 在您的 web.config 上:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="angular-application" stopProcessing="true">
          <match url="angular-application/(.*)" />
          <action type="Rewrite" url="ClientApp/dist/frontend/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
<configuration>

然后像这样导入:

@section Scripts{
    <script src="angular-application/runtime.js"></script>
    <script src="angular-application/polyfills.js"></script>
    <script src="angular-application/styles.js"></script>
    <script src="angular-application/vendor.js"></script>
    <script src="angular-application/main.js"></script>
}

如果您想访问 wwwroot 之外的文件夹,假设 ClientApp foler,您需要在启动时配置 app.UseStaticFiles()

public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles(); // For the wwwroot folder

app.UseFileServer(new FileServerOptions
{
    FileProvider = new PhysicalFileProvider(
        Path.Combine(Directory.GetCurrentDirectory(), "ClientApp")),
    RequestPath = "/ClientApp",
    EnableDirectoryBrowsing = true
});
}

参考https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-2.2#usefileserver