gpt4 book ai didi

c# - 在 .Net Core 2.0 和 Angular 中使用 'aspnet-webpack' 时找不到模块 'dotnet publish'

转载 作者:IT王子 更新时间:2023-10-29 04:47:33 26 4
gpt4 key购买 nike

我一直在努力寻找这个问题的答案,但无济于事。我正在尝试使用命令行命令“dotnet publish”发布我的 .Net Core 2.0 和 Angular 项目我成功发布了,但是在尝试运行时我项目的 .dll 在发布的文件夹中,我的项目在开发环境中运行时吐出此错误:

Unhandled Exception: System.AggregateException: One or more errors occurred. (Webpack dev middleware failed because of an error while loading 'aspnet-webpack'. Error was: Error: Cannot find module 'aspnet-webpack'

当在生产中运行并允许 DeveloperExceptionPage(如下面的 statup.cs 所示)时,.netcore 应用程序运行,但在实际的网络应用程序中崩溃,我认为这是由于更大的错误,aspnet-webpack 不是被发现:

NodeInvocationException: Uncaught (in promise): Error: No component factory found for HomeComponent. Did you add it to @NgModule.entryComponents?

启动.cs

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

public IConfiguration Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true
});
}
else
{
//app.UseExceptionHandler("/Home/Error");
app.UseDeveloperExceptionPage();
}

app.UseStaticFiles();

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");

routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});
}
}

我没有使用 @Angular/Cli,但我使用的是 VS2017(我相信是八月更新?)生成的默认 Angular 项目,它似乎只使用 Webpack。问题似乎是项目的生产配置需要一个我没有提供的引用,但我不明白为什么会这样。

到目前为止,这个问题的其他答案对我没有帮助,所以如果这是一个重复的问题,我深表歉意。

最佳答案

在发布 .Net Core 2.0 和 Angular 项目之后,在运行它之前,您需要确保环境变量 ASPNETCORE_ENVIRONMENT 未设置为 Development。已发布的项目不包括对 WebpackDevMiddleware 或 HotModuleReplacement 的支持。但如果环境设置为开发,它将尝试使用它们。

每当源文件发生更改时,HotModuleReplacement 会自动更新 Web 浏览器中 Webpack 构建的资源(例如 JavaScript、CSS 或图像)。这显然是您在生产中不希望看到的。

如果 ASPNETCORE_ENVIRONMENT 设置为“开发”,您可以更改设置:

setx ASPNETCORE_ENVIRONMENT "Production"

您需要关闭当前命令窗口并打开另一个窗 Eloquent 能看到更改。

也可以在startup.cs中注释掉下面的代码,达到同样的效果:

#if DEBUG
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true
});
#endif

关于c# - 在 .Net Core 2.0 和 Angular 中使用 'aspnet-webpack' 时找不到模块 'dotnet publish',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46911802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com