5
votes

Le package Nuget Microsoft.TypeScript.MSBuild échoue dans Dockerfile

J'ai un projet ASP.NET Core qui comprend plusieurs fichiers TypeScript. Le projet a une référence Microsoft.TypeScript.MSBuild pour compiler automatiquement ces fichiers TS en JavaScript

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

Le paramètre a fonctionné jusqu'à ce que j'essaie d'ancrer mon projet. Lorsque je suis l'exemple ici , l'erreur se produit:

/root/.nuget/packages/microsoft.typescript.msbuild/3.2.3/tools/Microsoft.TypeScript.targets(305,5): erreur MSB6003: le "nœud" exécutable de la tâche spécifié n'a pas pu être exécuté. Aucun fichier ou répertoire de ce type [/app/MyProject.csproj] Le la commande '/ bin / sh -c dotnet publish -c Release -o out' a renvoyé un code différent de zéro: 1

Comment résoudre le problème?


1 commentaires

Pour Aucun fichier ou répertoire de ce type [/app/MyProject.csproj] , il semble que le chemin d'exécution de votre commande ou le chemin relatif du projet est incorrect dans le menu fixe. Partagez-nous votre fichier docker, le structeur de projet et l'endroit où vous exécutez la commande.


3 Réponses :


4
votes

Sous Windows, Microsoft.TypeScript.MSBuild inclut tsc.exe. Sur les plates-formes non-Windows, comme dans un conteneur Docker, Microsoft.TypeScript.MSBuild n'inclut pas ts.exe et à la place est envoyé à un Node pour le compilateur TypeScript. Je pense que les images officielles dotnet / sdk Docker incluaient Node à un moment donné dans le passé, mais elles n'incluent plus Node. Vous devrez soit créer ou trouver une image Docker avec à la fois dotnet-sdk et Node, soit configurer une construction en plusieurs étapes impliquant l'image officielle de Node.


1 commentaires

L'ajout de RUN apt-get update && apt-get install -y nodejs au Dockerfile (basé sur l'image dotnet SDK) l'a corrigé pour moi.



1
votes

Dans les conteneurs Linux Vous devez d'abord installer node. Ajoutez les lignes suivantes à votre dockerfile. Ajoutez-le avant "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


0 commentaires

1
votes

Merci pour la question! M'a évité de le poser moi-même.

Pour moi, le correctif était aussi simple que d'exécuter sudo apt-get install nodejs (Utilisation d'Ubuntu 18.04)


0 commentaires