我使用 dotnet core CLI 创建了一个新的 Angular 项目:
dotnet new angular -o my-app
我已经在项目之外设置了自己的部署和构建流程,因此我的项目在构建和部署方面本质上是愚蠢的。我的项目不应该构建任何 .js
文件并将它们本地存储在项目中。这基本上就是我想要的:
- 我按 F5/启动调试器
- dotnet core 项目启动并运行
npm install && ngserve
- 完成后或每当需要时,浏览器将打开并显示
ngserve
站点(我认为默认值为http://localhost:4200
)<
到目前为止,我已经接近让它工作了,但由于某种原因,dotnet core 项目为我提供了构建的静态文件,这是我不想要的(因为我想从 ngserve 实时重新加载
)。这是我现在可以做的:
- 按 F5 启动调试器
- 出现一个包含调试信息的
ng
窗口,其中显示了npm install
和ngserve
等信息已运行 - 打开
http://localhost:5000
,它为我提供静态文件,就像我使用ng build
构建应用程序一样
如果我能解释一下我真正想要什么:
- 按 F5 启动调试器
- 项目启动并出现
ng
窗口,显示我运行了npm install && ngserve -port 4200
- 浏览器启动 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/