2016-07-15 95 views
10

這似乎是一個常見問題,但經過幾天的主動搜索,我沒有找到任何解決方案適用於我的案例。Webpack - 無法在Windows上運行(也不是webpack-dev-server)

  • 的windows7-64
  • 節點:6.3.0-64(也嘗試節點-v4.4.7-x64)的
  • NPM:3.10.3
  • 的WebPack:1.13.1
  • 昇華文字(不VIM)

首先,我不能安裝fsevents上窗口,這可能是問題,因爲它是圖書館觀看在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] 

因此,如果您--watch適用於Windows,請告訴我,你有安裝的WebPack時跳過fsevents同樣的問題?


其次,webpack --watch確實編譯文件,但它不看的。

E.g.如果我使用手寫筆的手錶,那麼它實際上阻礙我的命令行,直到我按CTRL + C

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

,僅在CTRL + C將解除我的鍵盤。

^CTerminate batch job (Y/N)? y 

stylus-watch

雖然webpack -w是完全不同的。這不僅僅是沒有編輯文件的變化,但它也沒有看。我的意思是,在輸入命令webpack --watch後,它一次編譯文件,但它不會鎖定我的鍵盤,因此它允許我編寫另一個命令。

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

webpack-dev-server一樣 - 它啓動服務器,但隨後馬上完成它。

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

它看起來問題不在於webpack.config.js,因爲它不具有像webpack --watch main.js bundle.js命令甚至觀看,但無論如何,這是我的基本配置。

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

而且我試過很多其他變體:

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

正如我所說的,這個問題似乎沒有webpack.config。JS


我也嘗試了諸如:

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 

所以是的,如果你有這個問題,你解決它,請分享一些信息。

  • 您是否有安裝問題fsevents
  • 是你的webpack --watch命令阻止你的鍵盤和實際上看,但只是沒有編譯後的文件更改?還是像我的情況一樣立即完成觀看?
  • 其他建議除了--watchwebpack-dev-server之外還有什麼建議?

謝謝!

+0

fsevents可能是l ike unix特定的東西。我在Windows上得到相同的警告,這不是一個問題,所以你可以消除這個問題。 – mjohnsonengr

+3

我也有幸添加了'watchOptions:{aggregateTimeout:300, poll:1000 },'到我的開發者服務器配置。我不得不實際製作開發服務器配置,而不是僅僅依靠webpack-dev-server CLI。請參閱https://webpack.github.io/docs/configuration.html#devserver – mjohnsonengr

+0

@mjohnsonengr,感謝您的幫助!是的,我忘了提及,我也嘗試過'watchOptions:{aggregateTimeout:300,po​​ll:1000}',但它沒有奏效。你可以分享你的webpack.config.js和dev服務器配置嗎?順便說一下,你的' - watch'從一開始就工作正常嗎? – SamAI

回答

5

我會在這裏包括這個,因爲它解決了我的問題。它可能會或可能不會解決你的問題,這取決於你的帖子中的路徑實際上是你正在使用的路徑。如果它不能解決你的問題,至少它會解決一些問題,導致這個問題首先出現在這個問題上。

你不能在其中有一個「(」或「)」的路徑,因爲如果你這樣做的話,is-glob依賴認爲它是一個glob。如果你必須把你的項目與「(」(如程序文件(x86)),則必須在node_modules添加像這樣到您的IS-水珠模塊的路徑:

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

其他特殊字符也可能是一個問題。感嘆號在我的情況下也是一個問題。我只需要用'[a-z_]'字符創建一個不同的目錄,並在那個目錄下工作。 – Nux

1

看一看使用fswatch,我發現自己在同一個爛攤子。在Windows/Linux無法支持fsevents考慮其嚴格的OSX。對Linux的支持,例如,通過inotify

看來fswatch提供了一個跨平臺的文件系統監控器,所以你應該全部設置,如果你使用你的Windows機器。