C# 找不到模块';aspnet网页包';使用';网络出版';in.NETCore2.0&;有棱角的
我一直在努力寻找这个问题的答案,但没有结果。。我正在尝试使用命令行命令“dotnet publish”发布我的.Net Core 2.0&Angular项目。我成功发布了该项目,但是当我尝试在发布的文件夹中运行我的项目的.dll时,我的项目在开发环境中运行时会出现以下错误: 未处理的异常:System.AggregateException:发生一个或多个错误。(由于加载“aspnet Webpack”时出错,Webpack dev中间件失败。错误为:错误:找不到模块“aspnet Webpack” 当在生产环境中运行并且允许使用DeveloperExceptionPage(如下面我的statup.cs所示)时,.netcore应用程序运行,但在实际的web应用程序中崩溃,我认为这是由于更大的错误,即找不到aspnet webpack: NodeInLocationException:Uncaught(承诺中):错误:找不到HomeComponent的组件工厂。是否将其添加到@NgModule.entryComponents Startup.csC# 找不到模块';aspnet网页包';使用';网络出版';in.NETCore2.0&;有棱角的,c#,angular,asp.net-core,asp.net-core-2.0,C#,Angular,Asp.net Core,Asp.net Core 2.0,我一直在努力寻找这个问题的答案,但没有结果。。我正在尝试使用命令行命令“dotnet publish”发布我的.Net Core 2.0&Angular项目。我成功发布了该项目,但是当我尝试在发布的文件夹中运行我的项目的.dll时,我的项目在开发环境中运行时会出现以下错误: 未处理的异常:System.AggregateException:发生一个或多个错误。(由于加载“aspnet Webpack”时出错,Webpack dev中间件失败。错误为:错误:找不到模块“aspnet Webpack
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。问题似乎是项目的生产配置需要一个我没有提供的参考,但我不明白为什么会这样
到目前为止,这个问题没有其他答案对我有帮助,因此如果这是一个重复的问题,我很抱歉。我对“aspnet webpack
有同样的问题。”,这是在项目开发的中途引入的,所以我有点惊讶地看到解决方案突然死亡。它在IIS上运行了好几个月,但突然无法启动
IIS日志文件没有帮助,所以我尝试了两种方法来解决这个问题,其中一种有效。快点
解决方案
我在“包管理器”窗口上运行了以下命令:
dotnet run --project <Full path of *.csproj> --configuration Debug
dotnet运行--项目--配置调试
它给了我一些提示,我开始搜索“错误:找不到模块'aspnet webpack
”问题。我尝试检查了最近几次签入的所有更改,发现我们更新了“Microsoft.AspNetCore.all
”从2.0.0
到2.0.3
版本,因此将其降级到原始版本修复了它
我猜它们都使用不同版本的节点包。因此,除非有很好的理由,否则不要为了方便而更新。在这方面,一些位与特定版本紧密耦合,如果有什么变化,很容易断开。尽管我已经设法将节点版本升级到最新的5.0.0
我很想找到更多详细信息,但目前还没有关于为什么需要特定版本的详细信息。发布.Net Core 2.0&Angular项目后,在运行该项目之前,需要确保环境变量ASPNETCORE\u environment未设置为Development。发布的项目不包括对WebpackDevMiddl的支持但如果环境设置为开发,它将尝试使用它们 每当源文件发生更改时,HotModuleReplacement会自动更新web浏览器中的Webpack内置资源(如JavaScript、CSS或图像)。这显然是您在生产中不希望看到的 如果ASPNETCORE_环境设置为“开发”,则可以通过以下方式更改设置:
setx ASPNETCORE_ENVIRONMENT "Production"
您需要关闭当前命令窗口并打开另一个窗口以查看更改
您还可以在startup.cs中注释掉以下代码以获得相同的结果:
#if DEBUG
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true
});
#endif
检查node.js是否已在生产环境中安装并位于路径中 Node.js由webpack使用 还要检查您是否拥有最新版本的Node.js(4+) 参考: Node.js的版本可以通过以下方式进行检查:
where.exe node.exe (Windows 7+)
which node.exe (linux bash)
当然,如果指向过时的Node.js
最好的在一个没有角度的项目中,我得到了与您相同的错误: 未处理的异常:System.AggregateException:发生一个或多个错误。(Web包开发中间件因加载“aspnet Web包”时出错而失败。错误为:错误:找不到模块“aspnet Web包” 事实证明,这是一个简单的节点问题,我往往会忘记
npm install
请记住,npm命令需要在包含package.json文件的顶级目录中运行。我希望这能帮助像我一样有很多问题的人记住实际运行npm命令。感谢论坛提醒我:
确保已完全安装所有这些依赖项:
npm install webpack-hot-middleware --save-dev
npm install webpack-dev-middleware --save-dev
npm install aspnet-webpack --save-dev
在我的例子中,原因是SPA(在我的例子中是Vue)位于ClientApp文件夹中,并且
app.UseWebpackDevMiddleware
希望它位于项目根目录中
设置ProjectPath
选项为我解决了这个问题
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true,
ConfigFile = Path.Combine(env.ContentRootPath, @"ClientApp\node_modules\@vue\cli-service\webpack.config.js"),
ProjectPath = Path.Combine(env.ContentRootPath, @"ClientApp")
});
在startup.cs的configure函数中,您可以将if语句用于开发环境
if (env.IsDevelopment())
{
// Print exception and all details for the developer
app.UseDeveloperExceptionPage();
// Use WebPack to update css , js , html automatically
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true
});
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
您可以使用此命令打印更改当前环境:
setx ASPNETCORE_环境“开发”此错误的主要原因是您在代码中的某个地方使用了依赖项,而该依赖项未安装在您的解决方案中。如果您使用visual studio,请尝试使用clean build,它将显示项目中的错误,这将帮助您找到它。有趣的是,我转到node.js应用程序,删除.Net核心组件e是的,但我计划很快重新实施,以再次尝试。我相信这样做会很有帮助,谢谢!我同意,更多细节会很好。我希望解决这个问题,就像你说的那样,从2.0.5降级到2.0.0,但我运气不好。我仍然会遇到同样的错误。@CarolinaBauque你能告诉我吗