Zu Ihrer Information: Es scheint OS X einen Ordner werden beschädigt haben kann und nicht mehr senden fsevents
(die watchpack
/ chokidar
/ Finder Anwendungen) für sich selbst und alle untergeordneten Ordner. Ich kann nicht sicher sein, ob Ihnen das passiert ist, aber es war sehr frustrierend für mich und einen Kollegen.
Wir konnten den beschädigten übergeordneten Ordner umbenennen und dann Ereignisse wie erwartet sofort beobachten. Weitere Informationen finden Sie in diesem Blogbeitrag: http://feedback.livereload.com/knowledgebase/articles/86239-os-x-fsevents-bug-may-prevent-monitoring-of-certai
Die empfohlenen Korrekturen über den obigen Link sind:
- Starten Sie den Computer neu
- Überprüfen der Festplatte und Reparieren von Berechtigungen über das Festplatten-Dienstprogramm
- Hinzufügen des Ordners zur Spotlight-Datenschutzliste (die Liste der Ordner, die nicht indiziert werden sollen) und anschließendes Entfernen aus diesem Ordner, wodurch eine Neuindizierung erzwungen wird
- Umbenennen des Ordners und möglicherweise Umbenennen
- Erstellen Sie den Ordner neu und verschieben Sie den alten Inhalt wieder hinein
Die ersten beiden haben bei uns nicht funktioniert, den Spotlight-Vorschlag nicht ausprobiert und die Neuerstellung hat sich nicht als notwendig erwiesen.
Wir konnten den Stammproblemordner finden, indem wir den Finder öffneten und Dateien in jedem nachfolgenden übergeordneten Ordner erstellten, bis einer sofort angezeigt wurde (da der Finder ebenfalls von diesem Fehler befallen wird). Der Stammordner, der nicht aktualisiert wird, ist der Schuldige. Wir haben es einfach gemacht mv
und mv
es wieder auf seinen ursprünglichen Namen gebracht, und dann hat der Beobachter gearbeitet.
Keine Ahnung, was die Korruption verursacht, aber ich bin nur froh, eine Lösung zu haben.
watchify
festgestellt. Keiner der Schritte hat bei mir funktioniert, sodass ich am Ende Umfrage arg verwendet habe. Viele Leute geben das Umfragearg an browserify statt watchify weiter. Mein Code sieht aus wie:watchify(browserify(config.src,{}), {poll:100});
npm install
als auch das Umbenennen eines Verzeichnisses sind sehr intensive Vorgänge, wie der Synchronisierungsclient implementiert ist.Wenn Ihr Code nicht neu kompiliert wird, erhöhen Sie die Anzahl der Beobachter (in Ubuntu):
Quelle: https://webpack.github.io/docs/troubleshooting.html
quelle
sudo sysctl -p
funktioniert nicht bei Mavericks. Irgendwelche neuen Ideen?ModuleConcatenationPlugin
. Durch AuslassenModuleConcatenationPlugin
kann das Ansehen fortgesetzt werden./etc/sysctl.conf
direkt zu betrachten und zu ändern ? Ändern bzw. diesen Schlüsselwert einstellen? (Wenn Sie den Befehl zum Anwenden von Ad-hoc (sysctl -p
) nicht finden können , dann ist es ein einzelner Neustart, und Sie sollten gut sein ...)sudo sysctl -a | grep max_user_watches
Das Hinzufügen des folgenden Codes zu meiner Webpack-Konfigurationsdatei hat das Problem für mich behoben. Ich hoffe, dies hilft. Vergessen Sie nicht, Ihren Ordner node_modules zu ignorieren, da dies die Leistung von HMR (Hot Module Replacement) beeinträchtigen würde:
quelle
watch: true
deaktiviert und funktioniert möglicherweise auch. Polling ist die kontinuierliche Überprüfung anderer Programme oder Geräte durch ein Programm oder Gerät, um festzustellen, in welchem Zustand sie sich befinden, normalerweise um festzustellen, ob sie noch verbunden sind oder kommunizieren möchten. Mit dieser Einstellungpoll: true
kann das Webpack den Status Ihres Programms überprüfen, um festzustellen, ob Änderungen vorgenommen wurden oder zumindest, was meiner Meinung nach geschieht.poll
Option wird von watchpackIch hatte dieses Problem bei der Arbeit mit WebStorm.
Das Deaktivieren von Einstellungen -> Systemeinstellungen -> "Sicheres Schreiben" hat das Problem für mich behoben.
Die Empfehlung dazu finden Sie unter: WebPack-Fehlerbehebung
quelle
Nur um mögliche Lösungen hinzuzufügen: Ich hatte meinen Projektordner in einem Dropbox-Ordner, das Herausziehen löste das Problem für mich. (OS X)
quelle
Ordner Groß- und Kleinschreibung war mein Problem. Meine Codeaufrufe für require () hatten alle Pfadnamen in Kleinbuchstaben, ABER die tatsächlichen Verzeichnisse enthielten einen Großbuchstaben. Ich habe alle meine Verzeichnisse in Kleinbuchstaben umbenannt und das Beobachten von Webpacks hat sofort funktioniert.
quelle
Ein Problem ist, dass, wenn Ihre Pfadnamen nicht absolut sind, solche Dinge passieren werden. Ich hatte versehentlich
resolve.root
auf./
anstatt gesetzt__dirname
und dies führte dazu, dass ich viel Zeit damit verschwendete, Dateien wie die Jungs über mir zu löschen und neu zu erstellen.quelle
Wenn das Ändern von fs.inotify.max_user_watches gemäß César immer noch nicht funktioniert, versuchen Sie, Polling anstelle von nativen Beobachtern zu verwenden, indem Sie Ihr Skript wie in den Dokumenten gezeigt erstellen oder das Webpack mit
--watch --watch-poll
Optionen ausführen .quelle
Beachten Sie, dass wenn Sie das Webpack in einer virtuellen Maschine (Vagrant / Virtualbox) ausführen und Ihre Dateien auf der Host-Plattform ändern, Dateiaktualisierungen im freigegebenen Ordner unter Ubuntu möglicherweise keine Inotify auslösen. Dadurch werden die Änderungen nicht vom Webpack übernommen.
Siehe: Virtualbox-Ticket Nr. 10660
In meinem Fall hat das Bearbeiten und Speichern der Datei auf de guest (in vi) das Webpack ausgelöst. Wenn Sie es auf dem Host (in PhpStorm, Notepad oder einer anderen Anwendung) bearbeiten, wird das Webpack NICHT ausgelöst, was auch immer ich getan habe.
Ich habe es mit vagrant-fsnotify gelöst .
quelle
vagrant-notify-forwarder
für mehr Magie Reload verwendenvagrant plugin install vagrant-notify-forwarder
machte eine dauerhafte Lösung für michArbeite für mich in Laravel Homestead
quelle
Updates: Das Löschen des gesamten Verzeichnisses und das erneute Klonen von Git aus dem Repo behebt mein Problem.
quelle
Wenn Sie Vim verwenden, sollten Sie versuchen, die Sicherungskopie auf "Ja" anstatt auf "Standard" zu setzen. Andernfalls benennt Vim manchmal die Originaldatei um und erstellt eine neue, was die Webpack-Uhr durcheinander bringt:
https://github.com/webpack/webpack/issues/781
Fügen Sie dies einfach zu Ihren vim-Einstellungen hinzu, wenn dies der Fall ist:
setze backupcopy = yes
quelle
Ich hatte das gleiche Problem mit einer .vue-Datei. Beim Neustart des Servers funktionierte alles einwandfrei, aber beim nächsten Speichern wurde es nicht mehr neu kompiliert. Das Problem lag im Importdateipfad, in dem ein Buchstabe groß geschrieben wurde. Es ist sehr schwer, dieses Problem zu erkennen, da bei einem Neustart des Servers alles funktioniert. Überprüfen Sie den Fall Ihrer Pfade.
quelle
Es wurde für mich nicht neu kompiliert, aber dann wurde mir klar / ich erinnerte mich, dass Webpack das Abhängigkeitsdiagramm und nicht nur einen Ordner (oder Dateien) überwacht. Sicher genug, dass die Dateien, die ich geändert habe, noch nicht Teil dieses Diagramms waren.
quelle
Für mich war das Erstellen von Ordnern und Dateien in VS Code das Problem. Um dies zu beheben, habe ich mein Repo neu geklont und dieses Mal neue Ordner und Dateien über die Befehlszeile anstelle von Code erstellt. Ich denke, Code hat die Dateien aus irgendeinem Grund beschädigt. Ich habe gesehen, dass die Anwendung gerade aktualisiert wurde. Vielleicht ist es ein neuer Fehler.
quelle
Ich hatte ein ähnliches Problem, weder Webpack noch Rollup im Watch-Modus haben die von mir vorgenommenen Änderungen erfasst. Ich fand heraus, dass es im Grunde meine Schuld war, als ich das Modul (.tsx-Datei) wechselte, das noch nirgendwo in der Anwendung importiert wurde (zum Beispiel App.ts, das der Einstiegspunkt ist), und ich erwartete, dass Build-Tools Fehler melden würden dort gemacht.
quelle
Die Art und Weise, wie ich das Problem gelöst habe, bestand darin, einen Großschreibfehler in einem Importpfad zu finden. Der Ordner im Dateisystem hatte den ersten Buchstaben in Kleinbuchstaben, der Importpfad in Großbuchstaben. Alles wurde gut kompiliert, daher war dies nur ein Problem mit der Webpack-Uhr.
quelle
Hatte auch dieses Problem in einer VirtualBox (5.2.18) Ubuntu (18.04) VM mit Vagrant (2.1.15) mit rsync-Synchronisation. Plötzlich läuft der erste Build großartig, aber Webpack berücksichtigt die Änderungen danach auch mit
fs.inotify.max_user_watches=524288
set nicht mehr. Hinzufügenpoll: true
in der Webpack-Konfiguration hat auch nicht geholfen.Nur
vagrant-notify-forwarder
funktioniert (vagrant-fsnotify aus irgendeinem Grund nicht), aber dann erfolgte die Neuerstellung zu schnell, nachdem die Datei auf dem Host gespeichert wurde, und ich nehme an, dass rsync nicht genug Zeit hatte, um seine Aufgabe zu beenden (möglicherweise aufgrund des Betrags) von synchronisierten Verzeichnissen in meiner Vagrant-Datei?).Schließlich habe ich die Uhr wieder zum
aggregateTimeout
Laufen gebracht, indem ich auch die in meiner Webpack-Konfiguration erhöhte:Wenn diese Lösung für Sie funktioniert, versuchen Sie erneut, diesen Wert zu senken. Andernfalls müssen Sie 10 Sekunden warten, bis der Build jedes Mal neu gestartet wird, wenn Sie auf Speichern klicken. Der Standardwert ist 300 ms .
quelle
Ich habe das gleiche Problem. Und ich stelle fest, dass es nicht kompiliert wird, weil mein Ordner ein Zeichen (*) enthält. Und die Verwendung des alten Watcher-Plugins scheint das Problem zu beheben. Fügen Sie diese Zeile Ihrer Webpack-Konfigurationsdatei hinzu.
quelle
Für mich
node_modules
löste das Löschen und erneute Installieren von npm oder das erneute Garnieren aller Pakete das Problemquelle
Was war die Ursache in meinem Fall:
Es scheint, dass der Wert von:
max_user_watches
in das/proc/sys/fs/inotify/max_user_watches
Webpack beeinflusstUm Ihren tatsächlichen Wert zu überprüfen
16384 war in meinem Fall und es war immer noch nicht genug.
Ich habe verschiedene Arten von Lösungen ausprobiert, wie:
Aber selbst wenn ich den Wert beim Neustart meines PCs ändern würde, würde er auf den Standardwert 16384 zurückgesetzt.
LÖSUNG, wenn Sie ein Linux-Betriebssystem haben (mein Fall, ich habe Manjaro):
Erstellen Sie die Datei:
sudo nano /etc/sysctl.d/90-override.conf
Und füllen Sie es mit:
fs.inotify.max_user_watches=200000
Es scheint, 200000 ist genug für mich.
Nachdem Sie die Datei erstellt und den Wert hinzugefügt haben, starten Sie einfach den PC neu und Sie sollten in Ordnung sein.
quelle
Eine einfache Lösung unter MacOS ist die folgende:
Öffnen Sie zwei Terminalfenster in demselben Verzeichnis, in dem sich Ihr Projekt befindet.
Führen Sie im ersten Terminalfenster Folgendes aus: webpack --watch
Im zweiten Terminal wird Windows ausgeführt: webpack-dev-server
Ich habe viele mögliche Lösungen ausprobiert und dies scheint die zuverlässigste zu sein
quelle
webpack --watch
Kompiliert das Projekt und speichert die Dateien auf der Festplatte. Dies entspricht der Ausführungwebpack
nach jedem Speichern.webpack-dev-server
ist ein Entwicklungstool, das in den Speicher kompiliert und den Inhalt als Service über http bereitstellt. In jedem Fall ist Ihr Vorschlag keine Lösung, da die kompilierten Dateien nicht auf die Festplatte geschrieben werden, solangewebpack --watch
sie nicht wie angekündigt funktionieren.Mögliche Lösung: Ändern des Kontexts in das App-Verzeichnis.
Ich hatte alle meine Webpack-Konfigurationsdateien in einem Unterordner:
In
webpack/development.js
, Set hatcontext: path.join(__dirname, '../')
mein Problem gelöst.quelle
Nachdem ich eine Handvoll Strategien zur Behebung dieses Problems ausprobiert hatte, gab ich einfach auf, aber während ich ein anderes Problem löste, versuchte ich es erneut und plötzlich
--watch
funktionierte die Flagge endlich.Um ehrlich zu sein, weiß ich nicht, warum es speziell funktioniert hat, aber nachdem ich die folgenden Schritte ausgeführt habe, hat es gerade angefangen zu funktionieren:
Es könnte passiert sein, dass während der Installation dieser Pakete eine Abhängigkeit das fehlende Puzzleteil hinzugefügt hat, wer weiß ...
Hoffe, dies hilft jedem, der da draußen kämpft, damit es funktioniert.
quelle
Ich füge eine weitere Antwort hinzu, weil ich glaube, dass dies die bisher beste Lösung ist. Ich benutze es jeden Tag und es rockt! Installieren Sie einfach diese Bibliothek:
https://github.com/gajus/write-file-webpack-plugin
Beschreibung: Erzwingt, dass das Webpack-Dev-Server-Programm Bundle-Dateien in das Dateisystem schreibt.
Wie installiert man :
quelle
Versuchen Sie ,
--watch
zu-d --watch
arbeitete für mich
quelle
Wenn dies in Ihrem Projekt plötzlich passiert ist, kann dies das Problem beheben.
Vielleicht haben sich die Dateien, die Ihr Projekt verfolgt haben, irgendwie geändert, nach denen das Webpack sucht. Sie können sie erneut erstellen, indem Sie einfache Schritte ausführen.
quelle
Ich bin auf diese Frage gestoßen, als ich ein ähnliches Problem hatte - es schien, dass das Webpack nicht neu gebündelt wurde, selbst wenn webpack --config ausgeführt wurde.
Ich habe sogar bundle.js gelöscht und die Webseite wurde immer noch wie vor meinen Änderungen angezeigt.
Für diejenigen unter Ihnen, die das gleiche Problem haben, habe ich endlich die Option "Cache leeren und hart neu laden" in Chrome ausgeführt (Rechtsklick auf die Schaltfläche zum erneuten Laden bei geöffneten Devtools), und das hat diesen Trick getan
quelle
Ich bin auf dasselbe Problem gestoßen, habe viele Dinge ausprobiert und schließlich hat Chrome Clear Browsing Data auf dem Mac für mich funktioniert.
Diese Module wurden installiert:
"browser-sync": "^ 2.26.7",
"browser-sync-webpack-plugin": "^ 2.2.2",
"webpack": "^ 4.41.2",
"webpack-cli": "^ 3.3.9"
quelle
Das Problem lag in der Unterscheidung zwischen .js- und .ts-Dateien. Warum ?
Beim Erstellen eines Projekts kompiliert Visual Studio Typoskriptdateien in .js und .js.map. Dies ist völlig unnötig, da das Webpack auch Typoskriptdateien verarbeitet (mit awesome-typescript-loader). Beim Bearbeiten von .tsx-Komponentendateien in Visual Studio Code oder mit deaktiviertem compileOnSave Option in tsconfig.json wird die bearbeitete ts-Datei nicht neu kompiliert und mein Webpack verarbeitet eine nicht tatsächliche .js-Datei.
Die Lösung bestand darin, das Kompilieren von Typoskriptdateien in Visual Studio beim Erstellen eines Projekts zu deaktivieren. Hinzufügen
in PropertyGroup Ihrer .csproj.
quelle