Antworten:
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:
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):
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
sudo sysctl -p
funktioniert nicht bei Mavericks. Irgendwelche neuen Ideen?
ModuleConcatenationPlugin
. Durch Auslassen ModuleConcatenationPlugin
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:
watchOptions: {
poll: true,
ignored: /node_modules/
}
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 Einstellung poll: true
kann das Webpack den Status Ihres Programms überprüfen, um festzustellen, ob Änderungen vorgenommen wurden oder zumindest, was meiner Meinung nach geschieht.
Ich 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
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)
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.
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.
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 .
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 .
vagrant-notify-forwarder
für mehr Magie Reload verwenden
vagrant plugin install vagrant-notify-forwarder
machte eine dauerhafte Lösung für mich
Arbeite für mich in Laravel Homestead
--watch --watch-poll
Updates: Das Löschen des gesamten Verzeichnisses und das erneute Klonen von Git aus dem Repo behebt mein Problem.
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
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.
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.
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.
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.
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.
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:
module.exports = {
watch: true,
watchOptions: {
aggregateTimeout: 10000
},
...
}
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 .
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.
plugins: [
new webpack.OldWatchingPlugin()
]
Für mich node_modules
löste das Löschen und erneute Installieren von npm oder das erneute Garnieren aller Pakete das Problem
Es scheint, dass der Wert von: max_user_watches
in das /proc/sys/fs/inotify/max_user_watches
Webpack beeinflusst
Um Ihren tatsächlichen Wert zu überprüfen
$cat /proc/sys/fs/inotify/max_user_watches
16384
16384 war in meinem Fall und es war immer noch nicht genug.
Ich habe verschiedene Arten von Lösungen ausprobiert, wie:
$ echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
Aber selbst wenn ich den Wert beim Neustart meines PCs ändern würde, würde er auf den Standardwert 16384 zurückgesetzt.
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.
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
webpack --watch
Kompiliert das Projekt und speichert die Dateien auf der Festplatte. Dies entspricht der Ausführung webpack
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, solange webpack --watch
sie nicht wie angekündigt funktionieren.
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:
1. Install most recent gcc version
$ sudo port install gcc48
$ sudo port select --set gcc mp-gcc48
2. Install most recent clang version
$ sudo port install clang-3.6
$ sudo port select --set clang mp-clang-3.6
3. Export variables holding the patch to C and C++ compiler
$ export CC=/opt/local/bin/clang
$ export CXX=/opt/local/bin/clang++
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.
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 :
npm install write-file-webpack-plugin --save-dev
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.
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
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"
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
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
in PropertyGroup Ihrer .csproj.