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

Sam*_*mAI 10 watch fsevents windows-7 npm webpack

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

  • Windows7的-64
  • 节点: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
Run Code Online (Sandbox Code Playgroud)

所以,如果你--watch在windows上工作,请告诉我,你在安装webpack时跳过fsevents有同样的问题吗?


其次,webpack --watch编译文件,但它根本不看.

例如,如果我使用手写笔手表,那么它实际上会阻止我的命令行,直到我按下ctrl + c

D:\file>stylus -w style.styl  
watching C:/Users/...  
compiled style.css  
watching style.styl
_
Run Code Online (Sandbox Code Playgroud)

只有在ctrl + c之后它才能解锁我的键盘.

^CTerminate batch job (Y/N)? y
Run Code Online (Sandbox Code Playgroud)

手写笔,手表

虽然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>
Run Code Online (Sandbox Code Playgroud)

的WebPack手表

同样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>
Run Code Online (Sandbox Code Playgroud)

看起来问题不在于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"
  },
};
Run Code Online (Sandbox Code Playgroud)

我尝试了很多其他变种:

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()
  ]
};
Run Code Online (Sandbox Code Playgroud)

正如我所说,问题似乎不在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
Run Code Online (Sandbox Code Playgroud)

所以,是的,如果您有这个问题并且您已经解决了,请分享一些信息.

  • 你有安装fsevents的问题吗?
  • 您的webpack --watch命令是否阻止了键盘并实际观看,但是在更改后才编译文件?还是像我的情况一样立即完成观看?
  • 除了--watch和之外还有什么其他建议可以使用webpack-dev-server

谢谢!

Jor*_*ren 5

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

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

  if (typeof str === 'string' && str.indexOf('Program Files (x86)') > -1)
     return false
Run Code Online (Sandbox Code Playgroud)