当前位置: 首页 > 编程语言 > C#

在.Net Core 2.0和Angular中使用’dotnet publish’时找不到模块’aspnet-webpack’分享

时间:2023-04-10 19:09:45 C#

C#学习教程:在.NetCore2.0和Angular中使用“dotnetpublish”时找不到模块“aspnet-webpack”我一直在尝试遵循这个问题的答案,但无济于事。我正在尝试使用命令行命令“dotnetpublish”发布我的.NetCore2.0和Angular项目,我发布成功,但是当我尝试运行我的项目时。在发布的文件夹中,我的项目在开发环境中运行时吐出这个错误:Unhandledexception:System.AggregateException:Oneormoreerrorshaveoccurred。(Webpackdev中间件因加载“aspnet-webpack”错误而失败。错误是:错误:无法找到在生产环境中运行的模块“aspnet-webpack”并允许出现DeveloperExceptionPage(如下面的statup.cs所示)。netcore应用程序该程序运行,但在实际的web应用程序中崩溃,我认为由于更大的错误,aspnet-webpacknotfound:NodeInvocationException:Uncaught(inpromise):Error:CouldnotfindcomponentfactoryforHomeComponent.你有没有把它添加到@NgModule.entryComponents?}公共IConfiguration配置{得到;}//这个方法被运行时调用。使用此方法向容器添加服务。publicvoidConfigureServices(IServiceCollectionservices){services.AddMvc();}//这个方法被运行时调用。使用此方法配置HTTP请求管道。publicvoidConfigure(IApplicationBuilderapp,IHostingEnvironmentenv){if(env.IsDevelopment()){app.UseDeveloperExceptionPage();app.UseWebpackDevMiddleware(newWebpackDevMiddlewareOptions{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(八月更新,我相信?)defaultAngularprojectgenerated,好像只用了Webpack问题好像是项目的生产配置需要引用,我没有提供,但是我想不通这是为什么。目前其他答案都没有这个问题对我有帮助,所以如果这是一个重复的问题,我深表歉意。我在项目开发中途引入的“aspnet-webpack”遇到了同样的问题,所以我对这个解决方案的突然死亡感到有点惊讶.它是在IIS中我已经为此工作了几个月,但突然无法启动。IIS日志文件没有帮助,所以我尝试了两种方法,其中一种有效。很着急!所以解决方案是:我在包管理器窗口中运行了以下内容-dotnetrun--project--configurationDebug它给了我一些指示,我开始谷歌搜索“错误:找不到模块‘aspnet-webpack’”问题。我尝试查看最近几次检查的所有更改,发现我们将“Microsoft.AspNetCore.All”从2.0.0版更新到2.0.3版,因此将其降级到原始版本修复了它。我猜他们都使用不同版本的节点包。所以除非有很好的理由不要更新。阅读这些部分与特定版本紧密相关,如果发生变化,Angular很容易崩溃。不过,我已经设法将我的节点版本升级到最新的5.0.0。很想知道更多细节,但还没有详细说明为什么需要特定版本。发布.NetCore2.0和Angular项目后,在运行前,需要确保环境变量ASPNETCORE_ENVIRONMENT没有设置为Development。已发布的项目不包括对WebpackDevMiddleware或HotModuleReplacement的支持。但如果环境设置为“Development”,它将尝试使用它们。每当源文件发生更改时,HotModuleReplacement将自动更新Web浏览器中Webpack构建的资源(例如JavaScript、CSS或图像)。这显然是你不想要的。如果ASPNETCORE_ENVIRONMENT设置为“开发”,您可以更改设置:setxASPNETCORE_ENVIRONMENT“生产”您需要关闭当前命令窗口并打开另一个窗口以查看更改。您也可以在startup.cs中注释掉以下代码以实现相同的结果:#ifDEBUGapp.UseWebpackDevMiddleware(newWebpackDevMiddlewareOptions{HotModuleReplacement=true});#endif检查node.js是否安装在生产环境和路径中间。Nodepack使用Node.js同时检查您是否拥有最新版本的Node.js(4+)参考:AspNetCore+Angular2:WebpackDevMiddlewareErrorwithnewproject您可以使用以下命令检查Node.js的版本:where.exenode.exe(Windows7+)whichnode.exe(linuxbash)当然,如果指向一个过时的Node.js,你应该检查并更新你的路径环境变量祝你好运以上是C#学习教程:using'dotnetwith.NetCore2.0和Angular我在发布时找不到模块“aspnet-webpack”共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处: