AggregateException:发生一个或多个错误。 (发生了一个或多个错误。(无法启动'npm'。要解决此问题:

时间:2018-06-14 13:53:30

标签: node.js visual-studio docker npm asp.net-core

Mac上的Visual Studio与docker有很多错误让人感到沮丧。我,在asp.net core 2.1上有一个项目,在docker镜像上有角度6。当项目成功构建但无法在下面运行时,详细信息如下:

处理请求时发生未处理的异常。 AggregateException:发生一个或多个错误。 (发生了一个或多个错误。(无法启动'npm'。要解决此问题: 1确保已安装'npm',并且可以在其中一个PATH目录中找到。 当前的PATH环境变量是:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin 确保可执行文件位于其中一个目录中,或更新PATH。 2有关原因的更多详细信息,请参阅InnerException。)) System.Threading.Tasks.Task.GetResultCore(bool waitCompletionNotification) InvalidOperationException:无法启动'npm'。解决这个问题: 1确保已安装'npm',并且可以在其中一个PATH目录中找到。 当前的PATH环境变量是:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin 确保可执行文件位于其中一个目录中,或更新PATH。 2有关原因的更多详细信息,请参阅InnerException。 Microsoft.AspNetCore.NodeServices.Npm.NpmScriptRunner.LaunchNodeProcess(ProcessStartInfo startInfo)

info for details

added more image

services.AddNodeServices(options =>
            {
                options.ProjectPath = "/Library/Frameworks/Mono.framework/Commands:/Applications/Visual Studio.app/Contents/Resources:/Applications/Visual Studio.app/Contents/MacOS:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:/usr/local/bin/";
            });

这是泊坞文件信息

FROM microsoft/dotnet:2.1-sdk AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY MeroRentalDev.sln ./
COPY WebApp/WebApp.csproj WebApp/
RUN dotnet restore -nowarn:msb3202,nu1503
COPY . .
WORKDIR /src/WebApp
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApp.dll"]

为链接尝试了很多解决方案,但无法解决 System Aggregation Exception : Failed to start Node Process

Microsoft.AspNetCore.NodeServices: Failed to start node process

https://github.com/aspnet/JavaScriptServices/issues/227

https://github.com/aspnet/JavaScriptServices/issues/707

2 个答案:

答案 0 :(得分:4)

最后解决问题。这个问题是由于node.js没有安装在asp.net core 2.1 docker image上。

所以在docker container

中安装节点js
# Setup NodeJs
RUN apt-get update && \
    apt-get install -y wget && \
    apt-get install -y gnupg2 && \
    wget -qO- https://deb.nodesource.com/setup_8.x | bash - && \
    apt-get install -y build-essential nodejs
# End setup

在修改和更改节点版本值之前检查节点的版本。在我的情况下,我有8.11.3所以 setup_8.x

完整泊坞文件

FROM microsoft/dotnet:2.1-sdk AS base

    # Setup NodeJs
    RUN apt-get update && \
        apt-get install -y wget && \
        apt-get install -y gnupg2 && \
        wget -qO- https://deb.nodesource.com/setup_8.x | bash - && \
        apt-get install -y build-essential nodejs
    # End setup
    WORKDIR /app
    EXPOSE 80

    FROM microsoft/dotnet:2.1-sdk AS build
    WORKDIR /src
    COPY MeroRentalDev.sln ./
    COPY WebApp/WebApp.csproj WebApp/
    RUN dotnet restore -nowarn:msb3202,nu1503
    COPY . .
    WORKDIR /src/WebApp
    RUN dotnet build -c Release -o /app

    FROM build AS publish
    RUN dotnet publish -c Release -o /app

    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app .
    ENTRYPOINT ["dotnet", "WebApp.dll"]

来源 - https://github.com/aspnet/Announcements/issues/298 Configuring Dockerfile for an ASP.NET Core 2.1 Angular Project

答案 1 :(得分:0)

我将发布该问题的另一种潜在原因(尽管 与现有答案有些相关),以帮助那些搜索错误的人消息。


除了当前答案之外,如果您(错误地或其他)在非Dev环境中将ASPNETCORE_ENVIRONMENT环境变量设置为“开发”,也会出现此错误。


例如,如果您在Startup.cs中具有以下代码,并且(有意)未在相关环境中安装npm,则在您的Dotnet上会看到上述错误消息应用尝试运行npm start

if (env.IsDevelopment())
{
    spa.UseAngularCliServer(npmScript: "start");
}

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-3.1