【发布时间】:2018-04-05 07:49:58
【问题描述】:
我一直在尝试遵循此问题的答案,但无济于事。我正在尝试使用命令行命令“dotnet publish”发布我的 .Net Core 2.0 和 Angular 项目我成功发布,但是在尝试运行时我项目的 .dll 在已发布文件夹中,我的项目在开发环境中运行时会吐出此错误:
未处理的异常:System.AggregateException:发生一个或多个错误。 (Webpack 开发中间件因加载“aspnet-webpack”时出错而失败。错误为:错误:找不到模块“aspnet-webpack”
当在生产环境中运行并允许 DeveloperExceptionPage(如下面的 statup.cs 所示)时,.netcore 应用程序运行,但在实际的 Web 应用程序中崩溃,我认为这是由于更大的错误,aspnet-webpack 不是被发现:
NodeInvocationException:未捕获(承诺中):错误:未找到 HomeComponent 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?
Startup.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(我相信是 8 月更新?)生成的默认 Angular 项目,它似乎只使用了 Webpack。问题似乎是项目的生产配置需要一个我没有提供的参考,但我不知道为什么会这样。
到目前为止,这个问题的其他答案对我没有帮助,所以如果这是一个重复的问题,我深表歉意。
【问题讨论】:
-
您的声明“当在生产中运行并允许 DeveloperExceptionPage 时”,似乎是一个矛盾。如果环境设置为生产,则不会使用 DeveloperExceptionPage。您的环境变量“ASPNETCORE_ENVIRONMENT”的设置是什么?当您运行“dotnet xxx.dll”时,它会为“托管环境”打印什么?
-
回复较晚,但可能对某人有所帮助.. 我认为这可能是因为您在 package.json @“devDependencies”的 devDependencies 中有 npm 包“aspnet-webpack”:{“aspnet- webpack": nnn } 并且在您的构建/发布的代码中不会考虑它,但是您尝试运行需要依赖项的“UseWebpackDevMiddleware HotModuleReplacement”。 (我来这里的原因是我遇到了同样的错误,因为我在将 React 应用程序“手动合并”到现有的 dotnet 核心应用程序时错过了在我的 package.json 中添加依赖项。)
标签: c# angular asp.net-core asp.net-core-2.0