webpack --watch не компилирует измененные файлы
Я пробовал использовать webpack --watch
и после редактирования моих JS-файлов он не запускает автоматическую перекомпиляцию.
Я попытался переустановить webpack
С помощью npm uninstall
но он все еще не работает.
какие идеи?
25 ответов
FYI: кажется, OS X может иметь папку, поврежденную и больше не отправлять fsevents
(где watchpack
/chokidar
/ Finder использует) для себя и любых дочерних папок. Я не могу быть уверен, что это то, что случилось с вами, но это было очень неприятно для меня и коллеги.
мы смогли переименовать поврежденную родительскую папку, а затем наблюдать за событиями сразу же, как ожидалось. См. это сообщение в блоге для получения дополнительной информации: http://feedback.livereload.com/knowledgebase/articles/86239-os-x-fsevents-bug-may-prevent-monitoring-of-certai
рекомендуемые исправления из приведенной выше ссылки:
- перезагрузка компьютера
- проверка диска и восстановление разрешений с помощью Disk Utility
- добавление папки в список конфиденциальности Spotlight (список папок, чтобы не индексировать), а затем удаление из него, эффективно заставляя переиндексация
- переименование папки, а затем, возможно, переименование ее обратно
- повторное создание папки и перемещение старого содержимого обратно в нее
первые два не сработали для нас, не попробовали предложение Spotlight, и воссоздание не оказалось необходимым.
мы смогли найти корневую папку проблем, открыв Finder и создавая файлы в каждой последующей родительской папке, пока один не появился сразу (так как Finder также будет обливаться этой ошибкой). Виновником является корневая папка, которая не обновляется. Мы просто mv
' d это и mv
он вернулся к своему первоначальному названию, а затем наблюдатель работал.
не знаю, что вызывает коррупцию, но я просто рад исправить.
Если ваш код не перекомпилируется, попробуйте увеличить количество наблюдателей (в 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
добавление следующего кода в мой файл конфигурации webpack исправило проблему для меня, надеюсь, это поможет.
watchOptions: {
poll: true
}
просто добавить к возможным решениям: У меня была папка проекта внутри папки Dropbox, перемещение ее решило проблему для меня. (OS X)
одна проблема заключается в том, что если ваш путь не абсолютный, то такие вещи, как это произойдет. Я случайно установил resolve.root
до ./
вместо __dirname
и это заставило меня тратить много времени на удаление и повторное создание файлов, как парни выше меня.
при изменении fs.через inotify.max_user_watches as pointend out by César по-прежнему не работает попробуйте использовать опрос вместо собственных наблюдателей, создав свой скрипт, как показано в docs или запуск webpack с --watch --watch-poll
параметры.
Если вы используете Vim, вы должны попробовать установить backupcopy в Да, а не авто по умолчанию. В противном случае Vim иногда переименует исходный файл и создаст новый, который испортит webpack watch:
https://github.com/webpack/webpack/issues/781
просто добавьте это в настройки vim, если это так:
set backupcopy=да
обратите внимание, что если вы запустите webpack на виртуальной машине (Vagrant / Virtualbox) и измените файлы на хост-платформе, обновления файлов в общей папке могут не вызвать inotify на Ubuntu. Это вызовет изменения не подхватываются webpack.
посмотреть: Virtualbox билет #10660
в моем случае редактирование и сохранение файла на de guest (в vi) вызвало webpack. Редактирование на хосте (в PhpStorm, Notepad или любом другом приложении) dit не запускает webpack, что бы я ни делал.
Я решил это с помощью бродяга-fsnotify.
У меня была такая же проблема на a .файл vue. Когда сервер перезагружен, все работало нормально, но при следующем сохранении он не перекомпилируется. Проблема заключалась в пути к файлу импорта с заглавной буквы. Очень сложно понять эту проблему, потому что все работает при перезагрузке сервера. Проверьте случае вашем пути.
Это не было перекомпиляцией для меня, но затем я понял / вспомнил, что webpack смотрит график зависимостей, а не только папку (или файлы). Конечно, файлы, которые я менял, еще не были частью этого графика.
Йоу!!!! Чувствительность к папке была моей проблемой. Мои кодовые вызовы require () имели все имена в нижнем регистре, но на самом деле в каталогах была прописная буква. Я переименовал все свои каталоги в нижний регистр, и просмотр webpack работал мгновенно. YESssssssssssssss!!!!! _AckerApple
способ, которым я решил проблему, заключался в поиске ошибки капитализации в пути импорта. Папка в файловой системе имела нижний регистр первой буквы, путь импорта-верхний регистр. Все скомпилировано отлично, так что это была просто проблема с webpack watch.
для меня создание папок и файлов в VS-коде было проблемой. Чтобы исправить это, я повторно клонировал свое РЕПО и на этот раз создал новые папки и файлы через командную строку вместо кода. Я думаю, что код по какой-то причине портил файлы. Я видел приложение только что обновлено, так что, возможно, это новая ошибка.
У меня такая же проблема. И я замечаю, что он не компилируется, потому что моя папка содержит некоторый символ(*). И использование старого плагина watcher, похоже, решает проблему. Добавьте эту строку в конфигурационный файл webpack.
plugins: [
new webpack.OldWatchingPlugin()
]
возможное решение: изменение контекст в папке app.
у меня были все мои файлы конфигурации webpack в подпапке:
components/
webpack/
development.js
app.js
на webpack/development.js
, set 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++
возможно, при установке этих пакетов какая-то зависимость просто добавила недостающую часть головоломки, которая знает...
надеюсь, что это поможет любому, кто борется там, чтобы сделать его работу.
Я добавляю еще один ответ, потому что я считаю, что это лучшее решение до сих пор. Я использую его каждый день и это круто! Просто установите эту библиотеку :
https://github.com/gajus/write-file-webpack-plugin
описание : Заставляет программу webpack-dev-server записывать файлы пакета в файловую систему.
установка :
npm install write-file-webpack-plugin --save-dev
У меня была аналогичная проблема, ни webpack, ни rollup в watch mode ware не улавливали изменений, которые я сделал. Я узнал, что это была в основном моя вина, поскольку я менял модуль (.tsx файл), который еще не был импортирован в любом месте приложения(например, приложение.ts, который является точкой входа), и я ожидал, что инструменты сборки сообщат об ошибках, которые я сделал там.
для меня удаление node_modules
и делать npm install или yarn снова, чтобы установить все пакеты решили проблему
простым решением для MacOS является следующее:
откройте два окна терминала в том же каталоге, в котором находится ваш проект.
в первом окне терминала запустите: webpack --watch
во втором терминале Windows запустите: webpack-dev-server
Я пробовал много возможных решений, и это, кажется, самый надежный
дело в том, что webpack загружает скрипт из какого-то странного url: webpack:/// который кэшируется.
Вы должны добавить версию в конце скрипта, чтобы предотвратить кэширование:
main-compiled.js?v=<?php echo time()?>"