发布 ASP.NET 核心应用程序:命令“npm install”退出,代码为 9009

Posted

技术标签:

【中文标题】发布 ASP.NET 核心应用程序:命令“npm install”退出,代码为 9009【英文标题】:Release of ASP.NET core App: The command "npm install" exited with code 9009 【发布时间】:2018-04-09 09:13:34 【问题描述】:

我有一个带有 React 前端的 ASP.NET Core 解决方案。我现在遇到一个问题,我无法使用 Visual Studio 中的正常发布窗口发布代码。我发布到 Azure Web 应用程序中的一个 Web 应用程序,它非常适用于我以相同方式构建的所有其他解决方案。

代码在本地完美运行,我可以在本地运行npm install 没有问题。

该错误显然来自发布时未找到的某些文件。在我的项目文件中,我一直在调试,发现这是挑战:

 <Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
    <!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
    <Exec Command="npm install" />
    <Exec Command="node node_modules/webpack/bin/webpack.js --config webpack.config.vendor.js --env.prod" />
    <Exec Command="node node_modules/webpack/bin/webpack.js --env.prod" />

    <!-- Include the newly-built files in the publish output -->
    <ItemGroup>
      <DistFiles Include="wwwroot\dist\**" />
      <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
        <RelativePath>%(DistFiles.Identity)</RelativePath>
        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
      </ResolvedFileToPublish>
    </ItemGroup>
  </Target>

Visual Studio 中的错误

Severity    Code    Description Project File    Line    Suppression State
Error       The command "npm install" exited with code 9009.    Likvido.CreditRisk  C:\Users\MYNAME\Documents\Github\Likvido.CreditRisk\Likvido.CreditRisk\Likvido.CreditRisk\Likvido.CreditRisk.csproj 75  

如果我注释掉前三行(npm install 和两个 webpack),我可以发布解决方案,但显然无法使用 javascript

知道如何解决这个问题吗?至少,如何更好地调试它?

Visual Studio 中的视觉错误

GUI中引用的日志文件:

09/04/2018 11.07.03
System.AggregateException: One or more errors occurred. ---> System.Exception: Publish failed due to build errors. Check the error list for more details.
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Web.Publish.PublishService.VsWebProjectPublish.<>c__DisplayClass40_0.<PublishAsync>b__2()
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ApplicationCapabilities.Publish.ViewModel.ProfileSelectorViewModel.<RunPublishTaskAsync>d__88.MoveNext()
---> (Inner Exception #0) System.Exception: Publish failed due to build errors. Check the error list for more details.<---

===================

【问题讨论】:

【参考方案1】:

所以这很尴尬,但对未来的 Google 员工可能有用。

根本问题很简单:这是一台没有安装Node.js(或NPM)的新计算机。这使得错误消息非常有用:node 未找到!

解决方案很简单:安装Node.js,确保它在您的 PATH 中,然后重新启动计算机。那你就解决这个问题了。

【讨论】:

补充一点:我从 Visual Studio 安装程序安装了 node.js 工具,并继续收到此错误,并假设它必须已安装并且还有其他事情发生。好吧,它仍然没有安装。我在计算机上的任何地方都找不到它,直到我从网站下载并安装了 node.js 并重新启动计算机后它才起作用。 我遇到了与在 Visual Studio 打开时安装 Node 相同的问题。然后我重新启动了 VS,一切正常。 这对我有用。我在这里下载了它:nodejs.org/en,而不是使用包管理器。 即使在下载和安装 nodejs 之后,我也遇到了同样的问题。感谢@iltafkhalid,我在重新启动视觉工作室后解决了我的问题。

以上是关于发布 ASP.NET 核心应用程序:命令“npm install”退出,代码为 9009的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2017 ASP.Net 发布自包含的点网核心应用

通过 Internet 公开我的 asp.net 核心 Web 应用程序

在 asp .net 核心中为 MediatR 库的发送和发布方法添加通用处理程序

用于 asp.net 核心应用程序的 ngrok 和 https 隧道

如何在 ASP.NET Core 中使用 npm

在 Asp.net 核心启动时创建的 SQL 分布式缓存