2016-07-15 99 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机器。