Fehler bei der Installation von "Hercules kann nicht gefunden werden" auf Heroku

9

Also, ich mache eine App mit React, und ich stelle sie danach auf Heroku um. Alles funktioniert gut in localhost und ohne Fehler, und Webpack kompiliert auch ohne Fehler. Ich habe auch auf Heroku env variables eingestellt.

Wenn ich es jedoch auf Heroku deploye, erhalte ich einen leeren Bildschirm und diesen Fehler in der Konsole (Ich benötige TodoApi richtig und habe verschiedene Möglichkeiten ausprobiert - Importieren usw., es funktioniert in localhost ohne Probleme):

Ich versuche es tagelang herauszufinden, deshalb wird jede Hilfe sehr geschätzt.

%Vor%

Hier sind meine webpack und package.json Dateien:

%Vor%     
Smithy 04.05.2017, 18:59
quelle

3 Antworten

0
___ qstnhdr ___ Fehler bei der Installation von "Hercules kann nicht gefunden werden" auf Heroku ___ answer43960143 ___

Das Problem ist genau das, was es sagt. Die TodoApi.

Lokal wird es funktionieren, weil sich TodoApi wahrscheinlich in Ihrem "node_modules" -Verzeichnis befindet. (Sie haben es nicht lokal in Ihre index.html aufgenommen, oder?) Das Problem ist, dass es nicht in das Implementierungspaket gepackt ist. Deshalb funktioniert es nicht.

Erstens, ich weiß nicht, ob Sie es bemerkt haben, aber Sie node_modules unter modulesDirectories und später unter module.loaders Sie schließen es wieder aus. Zum Glück für dich hat es nicht mitgerechnet, sonst würdest du immer noch bauen, lol. Außerdem können Sie die modulesDirectories Passage einfach löschen . Und denken Sie niemals, dass es eine gute Idee ist, node_modules als ein Verzeichnis in irgendetwas aufzunehmen. ;)

Ich würde Folgendes tun, um etwas Struktur zu bringen, damit Sie klar sehen können, was enthalten ist und was nicht. Oben definieren Sie einige absolute Verzeichnisse:

%Vor%

Damit wissen Sie sicher, welches Verzeichnis zugewiesen ist und es liest sich einfacher. Dann legen Sie Ihre Eingabedatei fest.

%Vor%

Und ändern Sie es unter Modulexport:

%Vor%

Ich setze den Kontext immer auf mein src-Verzeichnis, das heißt, bis jetzt ist webpack betroffen src ist das oberste Verzeichnis. Entferne die anderen Sachen unter dem Eintrag.

Ich würde auch das Uglify-Plugin auskommentieren, während der Build noch nicht funktioniert, nur um Dinge auszuschließen, die Fehler verursachen können.

Installieren Sie den webpack-bundle-analysator .

%Vor%

Und fügen Sie es Ihren Webpack-Plugins wie folgt hinzu:

%Vor%

Dies öffnet eine schöne grafische Ansicht Ihres Pakets nach dem Build. Einer der Blöcke muss "TodoApi" erwähnen und dann bist du gut. Wenn Sie zuerst das BundleAnalyzerPlugin hinzufügen, ohne Ihren Code zu ändern, können Sie sehen, dass TodoApi wahrscheinlich nicht da ist.

    
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123heroku ___ Heroku ist eine Cloud-Plattform für Ruby-, Node.js-, Python-, Go-, PHP- und JVM-basierte Anwendungen. Es bietet Git-basierte, GitHub- und API-Bereitstellungsstrategien, eine große Anzahl von als Add-Ons angebotenen Diensten und eine vollständige API. ___ tag123webpack ___ Webpack ist ein JavaScript Modul Bundler. Webpack verwendet Module mit Abhängigkeiten und generiert statische Elemente, die diese Module repräsentieren. Die wichtigsten Funktionen von Webpack basieren auf Erweiterbarkeit und ermöglichen Entwicklern die Verwendung von Best Practices in Webarchitektur und Webleistung. ___ qstntxt ___

Also, ich mache eine App mit React, und ich stelle sie danach auf Heroku um. Alles funktioniert gut in localhost und ohne Fehler, und Webpack kompiliert auch ohne Fehler. Ich habe auch auf Heroku env variables eingestellt.

Wenn ich es jedoch auf Heroku deploye, erhalte ich einen leeren Bildschirm und diesen Fehler in der Konsole (Ich benötige TodoApi richtig und habe verschiedene Möglichkeiten ausprobiert - Importieren usw., es funktioniert in localhost ohne Probleme):

Ich versuche es tagelang herauszufinden, deshalb wird jede Hilfe sehr geschätzt.

%Vor%

Hier sind meine webpack und package.json Dateien:

%Vor%     
___ answer43905782 ___

Ich denke, Ihr Problem liegt in TodoApi Ihrer Webpack-Konfigurationsdatei. Es scheint, dass package.json den Job bei der Bereitstellung in Heroku nicht korrekt ausführt. Ich empfinde es als sinnvoller, die Konfiguration von './app/components' und './app/api' mit TodoList.jsx anstelle von var TodoApi = require("TodoApi"); zu konfigurieren. Probieren Sie die folgende %code% Konfiguration aus und wahrscheinlich wird es mit Heroku funktionieren.

%Vor%     
___ antwort43791037 ___

Sie benötigen %code% , aber dieses Paket existiert nicht in Ihrem %code%

In Ihrer %code% Komponente

%code%

Ein kurzer Blick durch das Repo zeigt, dass das Paket nirgends existiert.

    
___
Carl Markham 04.05.2017 19:12
quelle
0

Ich denke, Ihr Problem liegt in resolve Ihrer Webpack-Konfigurationsdatei. Es scheint, dass resolve.modulesDirectories den Job bei der Bereitstellung in Heroku nicht korrekt ausführt. Ich empfinde es als sinnvoller, die Konfiguration von './app/components' und './app/api' mit resolve.root anstelle von resolve.modulesDirectories zu konfigurieren. Probieren Sie die folgende resolve Konfiguration aus und wahrscheinlich wird es mit Heroku funktionieren.

%Vor%     
Tharaka Wijebandara 11.05.2017 02:58
quelle
0

Das Problem ist genau das, was es sagt. Die TodoApi.

Lokal wird es funktionieren, weil sich TodoApi wahrscheinlich in Ihrem "node_modules" -Verzeichnis befindet. (Sie haben es nicht lokal in Ihre index.html aufgenommen, oder?) Das Problem ist, dass es nicht in das Implementierungspaket gepackt ist. Deshalb funktioniert es nicht.

Erstens, ich weiß nicht, ob Sie es bemerkt haben, aber Sie node_modules unter modulesDirectories und später unter module.loaders Sie schließen es wieder aus. Zum Glück für dich hat es nicht mitgerechnet, sonst würdest du immer noch bauen, lol. Außerdem können Sie die modulesDirectories Passage einfach löschen . Und denken Sie niemals, dass es eine gute Idee ist, node_modules als ein Verzeichnis in irgendetwas aufzunehmen. ;)

Ich würde Folgendes tun, um etwas Struktur zu bringen, damit Sie klar sehen können, was enthalten ist und was nicht. Oben definieren Sie einige absolute Verzeichnisse:

%Vor%

Damit wissen Sie sicher, welches Verzeichnis zugewiesen ist und es liest sich einfacher. Dann legen Sie Ihre Eingabedatei fest.

%Vor%

Und ändern Sie es unter Modulexport:

%Vor%

Ich setze den Kontext immer auf mein src-Verzeichnis, das heißt, bis jetzt ist webpack betroffen src ist das oberste Verzeichnis. Entferne die anderen Sachen unter dem Eintrag.

Ich würde auch das Uglify-Plugin auskommentieren, während der Build noch nicht funktioniert, nur um Dinge auszuschließen, die Fehler verursachen können.

Installieren Sie den webpack-bundle-analysator .

%Vor%

Und fügen Sie es Ihren Webpack-Plugins wie folgt hinzu:

%Vor%

Dies öffnet eine schöne grafische Ansicht Ihres Pakets nach dem Build. Einer der Blöcke muss "TodoApi" erwähnen und dann bist du gut. Wenn Sie zuerst das BundleAnalyzerPlugin hinzufügen, ohne Ihren Code zu ändern, können Sie sehen, dass TodoApi wahrscheinlich nicht da ist.

    
stevenvanc 14.05.2017 03:39
quelle

Tags und Links