Nuget 包 Microsoft.TypeScript.MSBuild 在 Dockerfile 中失败

Rob*_*erg 6 c# nuget typescript docker asp.net-core

我有一个包含多个 TypeScript 文件的 ASP.NET Core 项目。该项目具有Microsoft.TypeScript.MSBuild引用,可自动将这些 TS 文件编译为 JavaScript 文件。

  <ItemGroup>
    <PackageReference Include="Microsoft.TypeScript.MSBuild" Version="3.2.3" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

该设置一直有效,直到我尝试对我的项目进行 dockerize。当我按照此处的示例进行操作时,会发生错误:

/root/.nuget/packages/microsoft.typescript.msbuild/3.2.3/tools/Microsoft.TypeScript.targets(305,5):错误 MSB6003:无法运行指定的任务可执行文件“节点”。没有这样的文件或目录 [/app/MyProject.csproj] 命令“/bin/sh -c dotnet publish -c Release -o out”返回非零代码:1

如何解决问题?

小智 5

在 Windows 上,Microsoft.TypeScript.MSBuild包括 tsc.exe。在非 Windows 平台上,例如在 Docker 容器中,Microsoft.TypeScript.MSBuild不包含 ts.exe 而是外壳到 TypeScript 编译器的节点。我认为官方的 dotnet/sdk Docker 镜像过去曾包含 Node,但它们不再包含 Node。您需要使用 dotnet-sdk 和 Node 制作或查找 Docker 镜像,或者配置一些涉及官方 Node 镜像的多阶段构建。

  • 将“RUN apt-get update &amp;&amp; apt-get install -y nodejs”添加到“Doc​​kerfile”(基于 dotnet SDK 映像)为我解决了这个问题。 (8认同)