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?
3 Réponses :
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.
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.
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
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)
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.