.net 错误MSB3073:命令“npm install”退出,代码为1

w46czmvw  于 2023-03-13  发布在  .NET
关注(0)|答案(2)|浏览(441)

我正在容器化我的.Net + React.js应用程序,但是在这个过程中我遇到了一个意外的错误。我熟悉了类似的帖子,但是没有一个解决方案能解决我的问题。由于构建日志很长,我在pastebin中放置了:
https://pastebin.com/PhfYW3zm
我正在使用的dockerfile来自官方文档,这就是为什么它来到我作为一个surpise,它不工作:
https://learn.microsoft.com/en-us/visualstudio/containers/container-tools-react?view=vs-2022
停靠文件本身:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y libpng-dev libjpeg-dev curl libxi6 build-essential libgl1-mesa-glx
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install -y nodejs

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y libpng-dev libjpeg-dev curl libxi6 build-essential libgl1-mesa-glx
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install -y nodejs
WORKDIR /src
COPY ["WebApp/WebApp.csproj", "WebApp/"]
RUN dotnet restore "WebApp/WebApp.csproj"
COPY . .
WORKDIR "/src/WebApp"
RUN dotnet build "WebApp.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApp.csproj" -c Release -o /app/publish

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

rxztt3cl1#

按照用户PKLeso在此主题https://github.com/dotnet/sdk/issues/9593中的建议从.csproj中删除npm install标记解决了问题。

<Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />

如果我没记错的话,这将从你的容器中完全删除前端。但是,如果你想保留它在容器中,只需确保npm install在你的前端没有留下任何错误。因为否则会发生MSB3073错误。

fdbelqdn

fdbelqdn2#

如果react应用程序中存在依赖关系冲突(例如,在react to升级到最新版本后,并且由于ClientApp上调用的“npm install”未运行,但“npm install --force”运行,则在.csproj中将“--force”添加到

<Exec WorkingDirectory="$(SpaRoot)" Command="npm install" /> line

所以它变成了

<Exec WorkingDirectory="$(SpaRoot)" Command="npm install --force" />

相关问题