【问题标题】:Webpack --watch does not work on Windows (nor webpack-dev-server)Webpack --watch 在 Windows 上不起作用(也不是 webpack-dev-server)
【发布时间】:2016-11-18 17:31:26
【问题描述】:

这似乎是一个常见问题,但经过几天的积极搜索,我没有找到任何适用于我的情况的解决方案。

  • windows7-x64
  • 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 确实编译了文件,但它根本不看。

例如如果我使用手写笔手表,那么它实际上会阻止我的命令行,直到我按下 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 之外,还有什么其他建议吗?

谢谢!

【问题讨论】:

  • fsevents 可能就像一个 unix 特定的东西。我在 Windows 上收到相同的警告,这不是问题,因此您可以消除它。
  • 我还很幸运地将watchOptions: { aggregateTimeout: 300, poll: 1000 }, 添加到我的开发服务器配置中。我必须实际进行开发服务器配置,而不仅仅是依赖 webpack-dev-server CLI。见webpack.github.io/docs/configuration.html#devserver
  • @mjohnsonengr,感谢您的帮助!是的,我忘了提,我也试过watchOptions: { aggregateTimeout: 300, poll: 1000 },,但没有成功。你可以分享你的 webpack.config.js 和开发服务器配置吗?顺便问一下,您的--watch 从一开始就正常工作吗?
  • 有同样的问题(嗯,类似的),开发服务器并不总是接受更改,并通过使用上面的“watchOptions”修复让它总是接受更改。这是我完整的 webpack 配置文件:pastebin.com/tf5Ag90x
  • 查看这篇文章:Not compatible with your operating system or architecture: fsevents@1.0.11希望这篇文章可以帮助到你。

标签: windows-7 npm webpack watch fsevents


【解决方案1】:

我将在此处包含此内容,因为它解决了我的问题。它可能会或可能不会修复您的问题,具体取决于您帖子中的路径是否实际上是您正在使用的路径。如果它不能解决你的问题,至少它会解决一些人,因为这个问题首先出现在这个问题上。

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

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

【讨论】:

  • 其他特殊字符也可能是个问题。在我的情况下,感叹号也是一个问题。我只需要创建一个仅包含 [a-z_] 字符的不同目录并在该目录中工作。
【解决方案2】:

看看使用fswatch。我发现自己也陷入了同样的困境。 Windows/Linux 不能支持fsevents,因为它严格用于 OSX。例如,通过inotify 支持 Linux。

fswatch 似乎提供了一个跨平台的文件系统监视器,所以如果你使用你的 windows 机器,你应该已经准备好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 2018-06-12
    • 2019-04-22
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    相关资源
    最近更新 更多