angular - 使用 ngserve 和 dotnet core Angular 启动 Angular

标签 angular .net-core .net-core-angular

我使用 dotnet core CLI 创建了一个新的 Angular 项目:

dotnet new angular -o my-app

我已经在项目之外设置了自己的部署和构建流程,因此我的项目在构建和部署方面本质上是愚蠢的。我的项目不应该构建任何 .js 文件并将它们本地存储在项目中。这基本上就是我想要的:

  1. 我按 F5/启动调试器
  2. dotnet core 项目启动并运行 npm install && ngserve
  3. 完成后或每当需要时,浏览器将打开并显示 ngserve 站点(我认为默认值为 http://localhost:4200)<

到目前为止,我已经接近让它工作了,但由于某种原因,dotnet core 项目为我提供了构建的静态文件,这是我不想要的(因为我想从 ngserve 实时重新加载)。这是我现在可以做的:

  1. 按 F5 启动调试器
  2. 出现一个包含调试信息的 ng 窗口,其中显示了 npm installngserve 等信息已运行
  3. 打开http://localhost:5000,它为我提供静态文件,就像我使用ng build构建应用程序一样

如果我能解释一下我真正想要什么:

  1. 按 F5 启动调试器
  2. 项目启动并出现 ng 窗口,显示我运行了 npm install && ngserve -port 4200
  3. 浏览器启动 http://localhost:4200

现在它在端口 5000(或我在 launchSettings.json 文件中指定的任何内容)打开,但我无法让它启动 4200,因为从技术上讲,我不想要我的 dotnet 核心启动一个新的 Web 服务器的项目(因为 ngserve 已经创建了一个)。这可能吗?

package.json

"scripts": {
    "start": "npm install && ng serve --port 4200 &REM"
}

Startup.cs

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
        }

        app.UseSpa(spa =>
        {
            spa.Options.SourcePath = "component";

            if (env.IsDevelopment())
            {
                spa.UseAngularCliServer("start");
            }
        });
    }
}

最佳答案

我找到了this .

简而言之,您必须替换 Startup.cs 中的以下行

spa.UseAngularCliServer(npmScript: "start");

spa.UseProxyToSpaDevelopmentServer("NG-SERVER-URL");

您必须运行 ngserve 一次,这将告诉您它正在监听的 URL (NG-SERVER-URL)

此修改允许在单独的进程中运行ngserve。 Asp.Net 将连接并向其分派(dispatch)调用。

关于angular - 使用 ngserve 和 dotnet core Angular 启动 Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52835730/

相关文章:

angular - 关闭浏览器选项卡并退出 Angular2 应用程序

angular - 导入/导出在 Angular 2+ ngModule 中的作用

angular - 路线更改后以 Angular 滚动到顶部并且新组件加载不起作用

angular - Angular4 网站如何被谷歌收录?

nuget - 如何在我的 .Net Core 项目解决方案中包含 NuGet 包?

docker - Dotnetcore 容器启动时出现错误,询问我是否要运行 SDK 命令

rest - 格式化 webapi 响应 .net core