webpack – watch不编译更改的文件
我试着运行webpack --watch
并在编辑我的JS文件后,它不会触发自动重新编译。
我已经尝试使用npm uninstall
重新安装webpack
但它仍然无法正常工作。
有任何想法吗?
仅供参考:似乎OS X可以有一个文件夹被损坏,不再发送fsevents
( watchpack
/ chokidar
/ Finder使用)为自己和任何子文件夹。 我不能肯定这是发生在你身上的事情,但对于我和一位同事来说,这是非常令人沮丧的。
我们能够重命名损坏的父文件夹,然后观察事件立即通过预期。 有关详情,请参阅以下博客文章: http : //feedback.livereload.com/knowledgebase/articles/86239-os-x-fsevents-bug-may-prevent-monitoring-of-certai
上面的链接推荐的修补程序是:
- 重新启动计算机
- 检查磁盘并通过“磁盘工具”修复权限
- 将该文件夹添加到Spotlight隐私列表(文件夹的列表不索引),然后从中删除,有效地强制重新索引
- 重命名该文件夹,然后重新命名它
- 重新创build文件夹并将旧内容移回
前两个没有为我们工作,没有尝试聚光灯的build议,重新创build没有certificate是必要的。
我们能够通过打开Finder并在每个后续父文件夹中创build文件来find根问题文件夹,直到一个立即出现(因为Finder也会被这个bug弄糟)。 不更新的最根文件夹是罪魁祸首。 我们只是把它变成原来的名字,然后观察者就工作了。
不知道是什么原因造成的腐败,但我只是很高兴有一个修复。
如果您的代码没有被重新编译,请尝试增加观察者的数量(在Ubuntu中):
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
来源: https : //webpack.github.io/docs/troubleshooting.html
使用WebStorm时遇到了这个问题。
禁用设置 – >系统设置 – >“安全写”为我解决了它。
在WebPack疑难解答中find了这样做的build议
只需添加到可能的解决scheme:我有我的项目文件夹在一个Dropbox文件夹,移动它解决了我的问题。 (OS X)
一个问题是,如果你的path名不是绝对的,那么这样的事情就会发生。 我不小心将__dirname
设置为./
而不是__dirname
,这导致我浪费了大量的时间来删除和重新创build像我上面的人一样的文件。
如果将fs.inotify.max_user_watches更改为César,仍然不起作用,请尝试通过创build脚本(如文档中所示)或使用--watch --watch-poll
选项运行webpack来尝试使用轮询而不是本地观察器。
如果您使用Vim,则应尝试将backupcopy设置为yes,而不是默认的auto。 否则,Vim有时会重命名原始文件并创build一个新文件,这会使webpack手表陷入困境:
https://github.com/webpack/webpack/issues/781
如果是这种情况,只需将其添加到vim设置即可:
设置backupcopy = yes
请注意,如果您在虚拟机(Vagrant / Virtualbox)中运行webpack并在主机平台上更改文件,则共享文件夹中的文件更新可能不会在Ubuntu上触发inotify。 这将导致更改不被webpack拾起。
请参阅: Virtualbox故障单#10660
在我的情况下,编辑和保存de客人(在vi)的文件确实触发webpack。 在主机上(在PhpStorm,记事本或任何其他应用程序)编辑它不会触发webpack无论我做什么。
我通过使用vagrant-fsnotify来解决它。
添加下面的代码到我的webpackconfiguration文件解决了我的问题,希望这有助于。
watchOptions: { poll: true }
更新:删除整个目录和git克隆从回购重新修复我的问题。
可能的解决scheme:将上下文更改为app目录。
我有我所有的webpackconfiguration文件在一个子文件夹中:
components/ webpack/ development.js app.js
在webpack/development.js
,设置context: path.join(__dirname, '../')
解决了我的问题。
在尝试了一些解决这个问题的策略之后,我终于放弃了,但是在解决另一个问题的时候我又试了一次,突然之间所有的--watch
标志终于起作用了。
说实话,我不知道具体做了什么工作,但执行以下步骤后,才开始工作:
1. Install most recent gcc version $ sudo port install gcc48 $ sudo port select --set gcc mp-gcc48 2. Install most recent clang version $ sudo port install clang-3.6 $ sudo port select --set clang mp-clang-3.6 3. Export variables holding the patch to C and C++ compiler $ export CC=/opt/local/bin/clang $ export CXX=/opt/local/bin/clang++
在安装这些软件包的时候可能会发生一些依赖性,只是增加了缺less的难题,谁知道…
希望这有助于任何人在那里挣扎,使其工作。
我正在增加另一个答案,因为我相信这是迄今为止最好的解决scheme。 我每天都在使用它,它很有趣! 只需安装这个库:
https://github.com/gajus/write-file-webpack-plugin
说明:强制webpack-dev-server程序将捆绑文件写入文件系统。
如何安装 :
npm install write-file-webpack-plugin --save-dev
我有同样的问题。 我注意到它不是编译,因为我的文件夹包含一些字符(*)。 而使用旧的守望者插件似乎解决了这个问题。 将此行添加到您的webpackconfiguration文件。
plugins: [ new webpack.OldWatchingPlugin() ]
我有类似的问题,无论是在手表模式的webpack或总结捕捉我所做的更改。 我发现,这基本上是我的错,因为我正在改变模块(.tsx文件),这还没有导入应用程序中的任何地方(例如App.ts这是入口点),我期待构build工具来报告错误在那里。
我解决这个问题的方式是在导入path中发现大写错误。 文件系统上的文件夹有小写的第一个字母,inputpath是大写。 一切正常编译,所以这只是一个webpack手表包括问题。
MacOS上的简单解决scheme如下:
在您的项目所在的目录中打开两个terminal窗口。
在第一个terminal窗口中运行:webpack –watch
在第二个terminal窗口中运行:webpack-dev-server
我已经尝试了许多可能的解决scheme,这似乎是最可靠的
呦!!!! 文件夹大小写敏感是我的问题。 我的代码调用require()所有的小写path名称,但实际上目录中有一个大写字母。 我把我所有的目录都改名为小写字母,而且webpack的收看效果也是一目了然 YESssssssssssssss !!!!! _AckerApple