2016-07-15 135 views
10

Sembra essere un problema comune, ma dopo alcuni giorni di ricerca attiva non ho trovato nessuna soluzione che funzioni nel mio caso.Webpack --watch non funziona su Windows (né webpack-dev-server)

  • windows7-x64
  • nodo: 6.3.0-x64 (provato anche nodo-v4.4.7-x64)
  • npm: 3.10.3
  • webpack: 1.13.1
  • sublimi il testo (non Vim)

Prima di tutto, non posso installare FSEvents su finestre, che potrebbe essere il problema, perché è la libreria per la visione su 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] 

Quindi, se i vostri --watch funziona su Windows, mi dica, avete lo stesso problema con il salto FSEvents durante l'installazione webpack ?


In secondo luogo, webpack --watch fa compilare il file, ma non guarda affatto.

E.g. se uso orologio stilo, allora in realtà blocca la mia linea di comando fino a quando ho premere Ctrl + C

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

E solo dopo ctrl + c sarà sbloccare la mia tastiera.

^CTerminate batch job (Y/N)? y 

stylus-watch

Mentre webpack -w è totalmente diverso. Non si tratta solo di non compilare il file sui cambiamenti, ma anche di non guardare affatto. Voglio dire che dopo aver digitato il comando webpack --watch si sta compilando il file una volta, ma non blocca la mia tastiera e quindi mi permette di scrivere un altro comando.

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

Lo stesso con webpack-dev-server - inizia server, ma poi subito lo finisce.

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

Sembra che il problema non è con webpack.config.js, perché non guarda anche con un comando come webpack --watch main.js bundle.js, ma in ogni caso, ecco la mia config di base.

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

e ho provato molte altre varianti:

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() 
    ] 
}; 

Come ho detto, il problema sembra essere non in webpack.config.js


Ho anche provato cose come:

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 

Quindi sì, se si ha questo problema e si risolto esso, si prega di condividere alcune informazioni.

  • Hai avuto problemi con l'installazione FSEvents?
  • Il tuo comando webpack --watch ha bloccato la tua tastiera e in realtà sta guardando, ma semplicemente non compila i file dopo le modifiche? O stava finendo di guardare immediatamente come nel mio caso?
  • Qualche altro suggerimento cosa usare a parte --watch e webpack-dev-server?

Grazie!

+0

fsevents potrebbe essere l su una cosa specifica unix. Ricevo gli stessi avvertimenti su Windows e non è stato un problema, quindi puoi eliminarlo. – mjohnsonengr

+3

Ho anche avuto fortuna con l'aggiunta di 'watchOptions: { aggregateTimeout: 300, sondaggio: 1000 },' alla mia configurazione del server di sviluppo. Ho dovuto effettivamente creare una configurazione del server di sviluppo piuttosto che affidarmi alla CLI di webpack-dev-server. Vedi https://webpack.github.io/docs/configuration.html#devserver – mjohnsonengr

+0

@mjohnsonengr, grazie per il tuo aiuto! Sì, ho dimenticato di menzionare che ho anche provato 'watchOptions: {aggregateTimeout: 300, sondaggio: 1000},', ma non ha funzionato. Potresti condividere il tuo webpack.config.js e la configurazione del server di sviluppo? E a proposito, il tuo '--watch' funziona correttamente dall'inizio? – SamAI

risposta

5

Includerò questo qui perché ha risolto il problema. Potrebbe o meno aggiustare il tuo, a seconda che i tuoi percorsi nel tuo post siano effettivamente i percorsi che stai utilizzando. Se non risolve il problema, almeno risolverà alcuni casi, questa domanda viene sollevata per prima cosa per questo problema.

Non si può avere un percorso con "(" o ")", perché la dipendenza di is-glob pensa che sia un glob se lo si fa. Se si deve mettere il progetto in un percorso con "(" (come Program Files (x86)), quindi è necessario aggiungere qualcosa di simile al modulo IS-glob in node_modules:

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

Anche altri caratteri speciali potrebbero essere un problema. Il punto esclamativo era anche un problema nel mio caso. Ho semplicemente dovuto creare una directory diversa con solo i caratteri '[a-z_]' e lavorare in quella. – Nux

1

Dai un'occhiata alla utilizzando fswatch. mi ritrovo nella stessa mensa. Windows/Linux non può sostenere fsevents considerando la sua rigorosamente per OSX. il supporto per Linux, per esempio, è attraverso inotify.

sembra fswatch disponga in un monitor filesystem cross-platform, in modo da dovrebbe essere tutto impostato se si utilizza con la macchina Windows.