web-dev-qa-db-fra.com

Impossible de trouver le module 'aspnet-webpack' lors de l'utilisation de 'dotnet publish' dans .Net Core 2.0 & Angular

J'ai essayé de suivre les réponses à ce problème mais en vain. J'essaie de publier mon projet .Net Core 2.0 & Angular à l'aide de la commande en ligne de commande 'dotnet publish' que je publie avec succès, mais lorsque j'essaie d'exécuter mon projet. dll dans le dossier publié, mon projet crache cette erreur lorsqu’il est exécuté dans un environnement de développement:

Exception non gérée: System.AggregateException: une ou plusieurs erreurs se sont produites. (Le middleware de développement Webpack a échoué en raison d'une erreur lors du chargement de 'aspnet-webpack'. L'erreur était: Erreur: impossible de trouver le module 'aspnet-webpack'

Lorsqu'elle est exécutée en production et en tenant compte de la DeveloperExceptionPage (comme indiqué dans mon statup.cs ci-dessous), l'application .netcore s'exécute, mais se bloque au sein de l'application Web réelle, ce qui, je suppose, est dû à l'erreur plus importante, aspnet-webpack introuvable:

NodeInvocationException: Uncaught (promis): Erreur: Aucune fabrique de composants trouvée pour HomeComponent. L'avez-vous ajouté à @ NgModule.entryComponents?

Startup.cs

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
            {
                HotModuleReplacement = true
            });
        }
        else
        {
            //app.UseExceptionHandler("/Home/Error");
            app.UseDeveloperExceptionPage();
        }

        app.UseStaticFiles();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");

            routes.MapSpaFallbackRoute(
                name: "spa-fallback",
                defaults: new { controller = "Home", action = "Index" });
        });
    }
}

Je n'utilise pas @Angular/Cli, mais j'utilise le projet angulaire par défaut généré par VS2017 (la mise à jour d'août, je crois?), Qui semble n'utiliser que Webpack. Le problème semble être que la configuration Production du projet attend une référence que je ne fournis pas, mais je ne peux pas comprendre pourquoi.

Aucune autre réponse à cette question ne m'a aidé jusqu'à présent, alors je m'excuse s'il s'agit d'une question répétée.

12
Rinktacular

J'ai eu le même problème avec "aspnet-webpack", cela a été introduit à mi-chemin dans le développement du projet, donc j'ai été un peu surpris de voir la solution disparaître soudainement. Tout fonctionnait bien pendant quelques mois sur IIS, mais n’a soudainement pas réussi à démarrer.

Les fichiers journaux IIS n’étaient pas utiles, j’ai donc essayé de résoudre ce problème. L’un d’eux fonctionnait. Se dépêcher!

Donc la solution était: j'ai couru en suivant le gestionnaire de paquets window-

dotnet run --project <Full path of *.csproj> --configuration Debug

Il m’a donné quelques indications et j’ai commencé à chercher le problème «Erreur: Impossible de trouver le module 'aspnet-webpack'». J'ai essayé de passer en revue toutes les modifications des dernières vérifications, et j'ai découvert que nous avions mis à jour la version "Microsoft.AspNetCore.All" de la version 2.0.0 à la version 2.0.3. Nous l'avons donc rétablie à la version d'origine. 

Je suppose qu'ils utilisent tous les deux des versions différentes des packages de nœuds. Donc, ne mettez pas à jour pour des raisons autres que pour une très bonne raison. La lecture autour de cela, certains bits sont très étroitement couplés à des versions spécifiques et Angular se casse très facilement, si quelque chose change. En cours, j’ai réussi à mettre à niveau la version du nœud vers la dernière version 5.0.0.

J'adore trouver plus de détails, mais pour le moment, pas de détails sur les raisons pour lesquelles une version spécifique est nécessaire.

6
Sanjay Zalke

Après avoir publié votre projet .Net Core 2.0 & Angular et avant de l'exécuter, vous devez vous assurer que la variable d'environnement ASPNETCORE_ENVIRONMENT n'est pas définie sur Développement. Le projet publié n'inclut pas la prise en charge de WebpackDevMiddleware ou HotModuleReplacement. Mais il tentera de les utiliser si l'environnement est défini sur Développement. 

HotModuleReplacement met automatiquement à jour les ressources construites par Webpack (telles que JavaScript, CSS ou les images) dans votre navigateur Web chaque fois que les fichiers source sont modifiés. C'est évidemment quelque chose que vous ne voulez pas dans la production.

Si ASPNETCORE_ENVIRONMENT est défini sur "Développement", vous pouvez modifier le paramètre avec:

setx ASPNETCORE_ENVIRONMENT "Production"

Vous devrez fermer la fenêtre de commande actuelle et en ouvrir une autre pour voir le changement. 

Vous pouvez également commenter le code suivant dans startup.cs pour obtenir le même résultat:

#if DEBUG
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
    HotModuleReplacement = true
});
#endif
7
John Pankowicz

J'ai la même erreur que vous dans un projet sans Angular:

Exception non gérée: System.AggregateException: une ou plusieurs erreurs se sont produites. (Le middleware de développement Webpack a échoué en raison d'une erreur lors du chargement de 'aspnet-webpack'. L'erreur était: Erreur: impossible de trouver le module 'aspnet-webpack'

Il s’est avéré qu’il s’agissait d’un simple problème de noeud que j’ai tendance à oublier.

npm install

N'oubliez pas que les commandes npm doivent être exécutées dans le répertoire principal qui contient votre fichier package.json. J'espère que cela aidera quelqu'un qui a autant de problèmes que moi à me rappeler d'exécuter les commandes npm. Merci au forum qui m'a rappelé:

https://www.ebenmonney.com/forum/?view=thread&id=20&part=1#postid-57

2
URL_Flip

Vérifiez que node.js est installé en production et se trouve dans le chemin.

Node.js est utilisé par webpack

Vérifiez également que vous avez une version récente de Node.js (4+)

Référence: AspNetCore + Angular 2: erreur WebpackDevMiddleware avec le nouveau projet

La version de Node.js peut être vérifiée avec:

where.exe node.exe (Windows 7+)

which node.exe (linux bash)

Et bien sûr, la variable d'environnement path doit être vérifiée et mise à jour si vous pointez sur un fichier obsolète Node.js.

Bonne chance

0
Emmanuel DURIN