【问题标题】:Nuget package Microsoft.TypeScript.MSBuild fails in DockerfileNuget 包 Microsoft.TypeScript.MSBuild 在 Dockerfile 中失败
【发布时间】:2020-02-25 08:33:42
【问题描述】:

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

  <ItemGroup>
    <PackageReference Include="Microsoft.TypeScript.MSBuild" Version="3.2.3" />
  </ItemGroup>

在我尝试对我的项目进行 dockerize 之前,该设置一直有效。当我关注the example here时,出现错误:

/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

如何解决问题?

【问题讨论】:

  • 对于No such file or directory [/app/MyProject.csproj],您的命令运行路径或相对项目路径在 docker 中似乎有误。与我们分享您的 docker 文件、项目结构和运行命令的位置。

标签: c# typescript docker asp.net-core nuget


【解决方案1】:

在 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 添加到 Dockerfile(基于 dotnet SDK 映像)为我修复了它。
【解决方案2】:

感谢您的提问!让我不用自己问。

对我来说,修复就像运行 sudo apt-get install nodejs 一样简单 (使用 Ubuntu 18.04)

【讨论】:

    【解决方案3】:

    在 linux 容器中你必须先安装节点。将以下行添加到您的 dockerfile。在“RUN dotnet build”之前添加

    RUN apt-get update -yq && apt-get upgrade -yq && apt-get install -yq curl git nano
    RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && apt-get install -yq nodejs build-essential
    RUN npm install -g npm
    RUN npm install
    

    【讨论】:

      猜你喜欢
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多