用ng服务和dotnet核心Angular启动Angular

时间:2018-10-16 12:43:03

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

我已经使用dotnet核心CLI创建了一个新的Angular项目:

dotnet new angular -o my-app

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

  1. 我按F5 /启动调试器
  2. dotnet核心项目启动并运行npm install && ng serve
  3. 完成后或需要时,浏览器将打开并显示ng serve网站(我认为默认值为http://localhost:4200

到目前为止,我已经接近将其工作,但由于某种原因,dotnet核心项目为我提供了我不需要的静态文件(因为我想从ng serve重新加载) )。这是我现在可以做的事情:

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

如果我能解释我的真正意愿:

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

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

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");
            }
        });
    }
}

1 个答案:

答案 0 :(得分:0)

我找到了this

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

spa.UseAngularCliServer(npmScript: "start");

使用

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

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

此修改允许在单独的过程中运行ng serve。 Asp.Net将连接并调度对其的调用。