AggregateException:发生一个或多个错误。(发生一个或多个错误。(无法启动“ npm”。要解决此问题,请执行以下操作:

San*_*isy 5 visual-studio node.js npm docker asp.net-core

带有docker的mac上的Visual Studio遇到很多错误,感到沮丧。我在asp.net core 2.1上有一个项目,在docker image上有角度为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)

详细信息

添加了更多图片

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/";
            });
Run Code Online (Sandbox Code Playgroud)

这是码头工人文件信息

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"]
Run Code Online (Sandbox Code Playgroud)

对该链接尝试了许多解决方案,但无法解决 系统聚合异常:无法启动节点进程

Microsoft.AspNetCore.NodeServices:无法启动节点进程

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

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

San*_*isy 5

最后解决问题。此问题是由于未在asp.net core 2.1 docker映像上安装node.js引起的。

因此将节点js安装在docker容器中

# 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
Run Code Online (Sandbox Code Playgroud)

在修改和更改节点版本值之前,请检查节点的版本。就我而言,我有8.11.3,所以setup_8.x

完整的docker文件

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"]
Run Code Online (Sandbox Code Playgroud)

源- https://github.com/aspnet/Announcements/issues/298 配置Dockerfile为ASP.NET 2.1的核心项目角