2016-07-15 39 views
10

Es scheint ein häufiges Problem zu sein, aber nach ein paar Tagen aktiver Suche habe ich keine Lösung gefunden, die in meinem Fall funktioniert.Webpack --watch funktioniert nicht unter Windows (noch webpack-dev-server)

  • windows7-x64
  • node: 6.3.0-x64 (auch versucht, Knoten-V4.4.7-x64)
  • NPM: 3.10.3
  • webpack: 1.13.1
  • erhabener Text (nicht Vim)

aller Zuerst habe ich nicht installieren können FSEvents auf Fenster, die das Problem sein könnten, weil es die Bibliothek für das Ansehen auf OS X.

D:\file>npm install webpack 
[email protected] D:\file 
`-- [email protected] 

npm WARN optional Skipping failed optional dependency /chokidar/fsevents: 
npm WARN notsup Not compatible with your operating system or architecture: [email protected] 

So ist, wenn Ihre --watch Arbeiten an Fenstern, erklären Sie mir bitte, tun Sie das gleiche Problem haben FSEvents mit Überspringen wenn webpack Installation ?


Zweitens macht webpack --watch die Datei kompilieren, aber es ist überhaupt nicht sehen.

z. wenn ich Griffel Uhr verwenden, dann meine Befehlsblöcke Linie es tatsächlich, bis ich drücken ctrl + c

D:\file>stylus -w style.styl 
watching C:/Users/... 
compiled style.css 
watching style.styl 
_ 

Und erst nach ctrl + c es meine Tastatur entsperren wird.

^CTerminate batch job (Y/N)? y 

stylus-watch

Während webpack -w völlig anders ist. Es ist nicht nur nicht die Datei auf Änderungen zu kompilieren, aber es ist auch nicht aufpassen. Ich meine, dass nach dem Eingeben des Befehls es die Datei einmal kompiliert, aber es meine Tastatur nicht sperren und so ermöglicht es mir, einen anderen Befehl zu schreiben.

D:\webpa>webpack main.js bundle.js 
D:\webpa>webpack -w main.js bundle.js 
D:\webpa>webpack --watch main.js bundle.js 
D:\webpa> 

webpack-watch

Das gleiche mit webpack-dev-server - es beginnt Server, aber dann sofort beendet.

D:\webpa>webpack-dev-server --hot --inline 
http://localhost:8080/ 
webpack result is served from/
content is served from D:\webpa 
D:\webpa> 

Es ist wie das Problem aussieht, ist nicht mit webpack.config.js, weil es mit einem Befehl sieht nicht einmal wie webpack --watch main.js bundle.js, aber wie auch immer, hier ist meine grundlegende Konfiguration.

var webpack = require('webpack'); 
module.exports = { 
    context: __dirname, 
    entry: "./main.js", 
    output: { 
    path: __dirname, 
    filename: "bundle.js" 
    }, 
}; 

Und ich habe versucht, viele andere Varianten:

var webpack = require('webpack'); 
var path = require('path'); 
var entry = path.join(__dirname, "main.js"); 
var WebpackNotifierPlugin = require('webpack-notifier'); 

module.exports = { 
    context: __dirname, 
    entry: entry, 
    output: { 
    path: __dirname, 
    filename: "bundle.js" 
    }, 
    resolve: {root: [__dirname]}, 
    resolve: { fallback: path.join(__dirname, "node_modules") }, 
    resolveLoader: { fallback: path.join(__dirname, "node_modules") }, 
    plugins: [ 
    new webpack.OldWatchingPlugin(), 
    new WebpackNotifierPlugin(), 
    new webpack.ResolverPlugin(
     new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"]) 
    ), 
    new webpack.optimize.CommonsChunkPlugin('vendors', 'vendors/js/applibs.js'), 
    new webpack.optimize.DedupePlugin() 
    ] 
}; 

Wie gesagt, scheint das Problem in webpack.config nicht zu sein.js


habe ich auch versucht, die Dinge wie:

echo fs.inotify.max_user_watches=524288 
webpack-dev-server --content-base ./ --port 9966 --hot --inline 
webpack --watch --watch-poll 
rename/move/create new folder, reinstall node.js and webpack 

Also ja, wenn Sie dieses Problem haben und Sie aufgelöst es, teilen Sie bitte ein paar Informationen.

  • Haben Sie Probleme mitFSEvents zu installieren?
  • War Ihr webpack --watch Befehl blockiert Ihre Tastatur und tatsächlich zu beobachten, aber nur nicht kompilieren Dateien nach Änderungen? Oder war es genau wie in meinem Fall?
  • Weitere Vorschläge, was außer und webpack-dev-server zu verwenden?

Vielen Dank!

+0

fsevents könnte l sein Ich habe eine Unix-spezifische Sache. Ich bekomme die gleichen Warnungen unter Windows und es war kein Problem, also können Sie das beseitigen. – mjohnsonengr

+3

Ich hatte auch Glück mit dem Hinzufügen von 'WatchOptions: { aggregateTimeout: 300, Umfrage: 1000 },' zu meinem Dev-Server-Konfiguration. Ich musste eigentlich eine dev-Server-Konfiguration erstellen, anstatt mich nur auf webpack-dev-server CLI zu verlassen. Siehe https://webpack.github.io/docs/configuration.html#devserver – mjohnsonengr

+0

@mjohnsongr, vielen Dank für Ihre Hilfe! Ja, ich habe vergessen zu erwähnen, dass ich auch 'watchOptions: {aggregateTimeout: 300, poll: 1000},' versucht habe, aber es hat nicht geklappt. Können Sie Ihre webpack.config.js und dev server config teilen? Und übrigens, funktioniert deine '--watch' von Anfang an richtig? – SamAI

Antwort

5

Ich werde das hier aufnehmen, weil es mein Problem behoben hat. Je nachdem, ob es sich bei deinen Pfaden in deinem Beitrag tatsächlich um die von dir verwendeten Pfade handelt, kann es passieren, dass du deine Probleme behebst. Wenn es Ihr Problem nicht löst, löst es zumindest einige, weil diese Frage als erstes für dieses Problem auftaucht.

Sie können keinen Pfad mit "(" oder ")" darin haben, weil die Is-Glob-Abhängigkeit denkt, dass es ein Glob ist, wenn Sie das tun. Wenn Sie in einem Pfad mit „(“ (wie Program Files (x86)) setzen Sie Ihr Projekt muss, dann sind Sie etwas zu Ihrem IS-glob Modul in node_modules hinzufügen:

if (typeof str === 'string' && str.indexOf('Program Files (x86)') > -1) 
    return false 
+0

Andere Sonderzeichen könnten auch ein Problem sein. Ausrufezeichen war auch ein Problem in meinem Fall. Ich musste einfach nur ein anderes Verzeichnis mit '[a-z_]' - Zeichen erstellen und in diesem arbeiten. – Nux

1

Werfen Sie einen Blick auf mit fswatch. finde ich mich in der gleichen Schlamassel. Windows/Linux nicht fsevents Berücksichtigung unterstützen kann seine ausschließlich für OSX. die Unterstützung für Linux, zum Beispiel, ist durch inotify.

Es scheint fswatch bietet eine plattformübergreifende Dateisystem-Monitor, so dass Sie sollte eingestellt werden, wenn Sie mit Ihrer Windows-Maschine verwenden