Webpack --watch在Windows上不起作用(也不适用于webpack-dev-server)

时间:2016-07-15 13:21:05

标签: windows-7 npm webpack watch fsevents

这似乎是一个常见的问题,但经过几天的积极搜索后,我找不到任何适合我的解决方案。

  • 的windows7-64
  • node:6.3.0-x64(也尝试过node-v4.4.7-x64)
  • npm:3.10.3
  • webpack:1.13.1
  • 崇高文字(不是Vim)

首先,我无法在Windows上安装 fsevents ,这可能是问题,因为它是在OS X上观看的库。

D:\file>npm install webpack
file@1.0.0 D:\file
`-- webpack@1.13.1

npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: fsevents@1.0.13

那么,如果您的--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
  • 之外还有什么其他建议可以使用

谢谢!

2 个答案:

答案 0 :(得分:5)

我会在这里加入,因为它解决了我的问题。根据您帖子中的路径实际上是您正在使用的路径,它可能会也可能不会修复您的路径。如果它没有解决你的问题,至少它会解决一些问题导致这个问题首先出现在这个问题上。

你不能在其中有一个带“(”或“)”的路径,因为如果你这样做,那么is-glob依赖认为它是一个glob。如果必须将项目放在带有“(”(如Program Files(x86))的路径中,则必须在node_modules中的is-glob模块中添加类似的内容:

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

答案 1 :(得分:1)

查看使用fswatch。我发现自己陷入了同样的困境。考虑到它严格用于OSX,Windows / Linux不支持 System.out.println(Integer.MAX_VALUE+1) 。例如,对Linux的支持是通过inotify

似乎fsevents提供了一个跨平台的文件系统监视器,因此如果您使用Windows机器,则应该全部设置。