Câu trả lời:
FYI: có vẻ như OS X có thể có một thư mục bị hỏng và không còn gửi fsevents
(mà watchpack
/ chokidar
/ Finder sử dụng) cho chính nó và bất kỳ thư mục con nào. Tôi không thể chắc chắn đây là điều gì đã xảy ra với bạn, nhưng tôi và một đồng nghiệp đã rất bực bội.
Chúng tôi có thể đổi tên thư mục mẹ bị hỏng và sau đó xem các sự kiện ngay lập tức diễn ra như mong đợi. Xem bài đăng trên blog này để biết thêm thông tin: http://feedback.livereload.com/knowledgebase/articles/86239-os-x-fsevents-bug-may-prevent-monitoring-of-certai
Các bản sửa lỗi được đề xuất từ liên kết trên là:
Hai lần đầu tiên không hiệu quả với chúng tôi, không thử đề xuất Spotlight và việc tạo lại không được chứng minh là cần thiết.
Chúng tôi có thể tìm thấy thư mục có vấn đề gốc bằng cách mở Finder và tạo các tệp trong từng thư mục mẹ kế tiếp cho đến khi một thư mục xuất hiện ngay lập tức (vì Finder cũng sẽ bị lỗi này). Thư mục root-most không cập nhật là thủ phạm. Chúng tôi chỉ cần mv
'd nó và mv
' nó trở lại tên ban đầu của nó, và sau đó trình theo dõi đã hoạt động.
Không biết điều gì gây ra tham nhũng, nhưng tôi rất vui khi có cách sửa chữa.
watchify
, không có bước nào phù hợp với tôi vì vậy tôi đã kết thúc bằng cách sử dụng thăm dò ý kiến. Rất nhiều người đang thông qua lập luận của cuộc thăm dò để duyệt qua thay vì lưu trữ. Mã của tôi trông như sau:watchify(browserify(config.src,{}), {poll:100});
npm install
cũng như đổi tên một thư mục đều là những hoạt động rất chuyên sâu theo cách mà ứng dụng khách đồng bộ được thực hiện.
Nếu mã của bạn không được biên dịch lại, hãy thử tăng số lượng người theo dõi (trong Ubuntu):
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
sudo sysctl -p
không hoạt động trên Mavericks. Bất kỳ ý tưởng mới?
ModuleConcatenationPlugin
. Bỏ qua ModuleConcatenationPlugin
cho phép xem tiếp tục.
/etc/sysctl.conf
trực tiếp chưa? Thay đổi tương ứng. thiết lập khóa-giá trị đó? (Nếu bạn không thể tìm thấy lệnh để áp dụng ad-hoc ( sysctl -p
), cũng sau đó nó khởi động lại duy nhất, và bạn sẽ được tốt ...)
sudo sysctl -a | grep max_user_watches
Việc thêm mã sau vào tệp cấu hình webpack của tôi đã khắc phục được sự cố cho tôi, hy vọng điều này sẽ hữu ích. Đừng quên bỏ qua thư mục node_modules của bạn, vì điều đó sẽ giết chết hiệu suất cho HMR (Thay thế mô-đun nóng):
watchOptions: {
poll: true,
ignored: /node_modules/
}
watch: true
có thể hoạt động. Thăm dò ý kiến là việc một chương trình hoặc thiết bị kiểm tra liên tục các chương trình hoặc thiết bị khác để xem chúng đang ở trạng thái nào, thường là để xem chúng còn được kết nối hay muốn giao tiếp. Vì vậy, cài đặt poll: true
cho phép webpack kiểm tra trạng thái chương trình của bạn để xem liệu có thay đổi nào được thực hiện hay không, hoặc ít nhất là điều tôi cho là đang xảy ra.
Tôi đã gặp sự cố này khi làm việc với WebStorm.
Vô hiệu hóa Cài đặt -> Cài đặt Hệ thống -> "ghi an toàn" đã giải quyết nó cho tôi.
Tìm thấy khuyến nghị làm như vậy trong: Khắc phục sự cố WebPack
Chỉ để thêm vào các giải pháp khả thi: Tôi có thư mục dự án của mình bên trong thư mục Dropbox, việc di chuyển nó ra ngoài đã giải quyết được vấn đề cho tôi. (OS X)
Sự phân biệt chữ hoa chữ thường trong thư mục là vấn đề của tôi. Các lệnh gọi mã của tôi đến request () có tất cả các tên đường dẫn chữ thường NHƯNG các thư mục thực sự có chữ hoa trong chúng. Tôi đã đổi tên tất cả các thư mục của mình thành chữ thường và việc xem webpack hoạt động ngay lập tức.
Một vấn đề là nếu tên đường dẫn của bạn không phải là tuyệt đối thì những điều như thế này sẽ xảy ra. Tôi đã vô tình đặt resolve.root
thành ./
thay vì __dirname
và điều này khiến tôi mất rất nhiều thời gian để xóa và tạo lại các tệp như những người ở trên tôi.
Nếu việc thay đổi fs.inotify.max_user_watches như được César chỉ ra vẫn không hiệu quả, hãy thử sử dụng tính năng thăm dò thay vì người theo dõi gốc bằng cách tạo tập lệnh của bạn như được hiển thị trong tài liệu hoặc chạy webpack với --watch --watch-poll
các tùy chọn.
Lưu ý rằng nếu bạn chạy webpack trong một máy ảo (Vagrant / Virtualbox) và bạn thay đổi tệp của mình trên nền tảng máy chủ, các cập nhật tệp trong thư mục chia sẻ có thể không kích hoạt thông báo trên Ubuntu. Điều đó sẽ làm cho các thay đổi không được webpack tiếp nhận.
xem: Virtualbox ticket # 10660
Trong trường hợp của tôi, việc chỉnh sửa và lưu tệp trên de guest (in vi) đã kích hoạt webpack. Chỉnh sửa nó trên máy chủ (trong PhpStorm, Notepad hoặc bất kỳ ứng dụng nào khác) sẽ KHÔNG kích hoạt gói web bất cứ điều gì tôi đã làm.
Tôi đã giải quyết nó bằng cách sử dụng vagrant-fsnotify .
vagrant-notify-forwarder
để tải lại ma thuật nhiều hơn
vagrant plugin install vagrant-notify-forwarder
đã đưa ra một giải pháp lâu dài cho tôi
Làm việc cho tôi ở Laravel Homestead
--watch --watch-poll
Cập nhật: xóa toàn bộ thư mục và sao chép git sau đó từ repo khắc phục sự cố của tôi.
Nếu bạn đang sử dụng Vim, bạn nên thử đặt backupcopy thành yes thay vì auto mặc định. Nếu không, Vim đôi khi sẽ đổi tên tệp gốc và tạo một tệp mới, điều này sẽ gây rối với đồng hồ webpack:
https://github.com/webpack/webpack/issues/781
Chỉ cần thêm điều này vào cài đặt vim của bạn nếu đây là trường hợp:
đặt backupcopy = yes
Tôi đang gặp sự cố tương tự trên tệp .vue. Khi máy chủ khởi động lại, tất cả đều hoạt động tốt, nhưng trong lần lưu tiếp theo, nó không được biên dịch lại nữa. Vấn đề là trên đường dẫn tệp nhập có một chữ cái được viết hoa. Rất khó để tìm ra vấn đề này vì mọi thứ hoạt động khi máy chủ khởi động lại. Kiểm tra trường hợp của các đường dẫn của bạn.
Nó không phải là biên dịch lại cho tôi nhưng sau đó tôi nhận ra / nhớ rằng webpack xem biểu đồ phụ thuộc chứ không chỉ một thư mục (hoặc các tệp). Chắc chắn rằng các tệp tôi đang thay đổi chưa phải là một phần của biểu đồ đó.
Đối với tôi, việc tạo các thư mục và tệp trong VS Code là một vấn đề. Để khắc phục, tôi đã nhân bản lại repo của mình và lần này, tạo các thư mục và tệp mới thông qua dòng lệnh thay vì Mã. Tôi nghĩ rằng Mã đã làm hỏng các tệp vì một số lý do. Tôi thấy ứng dụng vừa được cập nhật nên có thể đó là một lỗi mới.
Tôi đã gặp vấn đề tương tự, cả gói web hoặc cuộn lên trong kho chế độ xem đều không bắt được những thay đổi tôi đã thực hiện. Tôi phát hiện ra rằng về cơ bản đó là lỗi của tôi khi tôi đang thay đổi mô-đun (tệp .tsx) chưa được nhập vào bất kỳ đâu trong ứng dụng (ví dụ: App.ts là điểm nhập) và tôi đang mong đợi các công cụ xây dựng thông báo lỗi. được thực hiện ở đó.
Cách tôi giải quyết vấn đề là tìm lỗi viết hoa trong đường dẫn nhập. Thư mục trên hệ thống tệp có chữ cái đầu tiên viết thường, đường dẫn nhập là chữ hoa. Mọi thứ được biên dịch tốt, vì vậy đây chỉ là một vấn đề bao gồm đồng hồ webpack.
Cũng có vấn đề này trong máy ảo VirtualBox (5.2.18) Ubuntu (18.04) sử dụng Vagrant (2.1.15) với đồng bộ hóa rsync. Đột nhiên, bản dựng đầu tiên chạy rất tốt nhưng Webpack không xem xét các thay đổi sau đó, ngay cả với fs.inotify.max_user_watches=524288
bộ. Thêm poll: true
vào cấu hình Webpack cũng không giúp được gì.
Chỉ vagrant-notify-forwarder
hoạt động (vì lý do nào đó không có vagrant-fsnotify), nhưng sau đó quá trình xây dựng lại diễn ra quá nhanh sau khi lưu tệp trên máy chủ và tôi cho rằng rsync không có đủ thời gian để hoàn thành nhiệm vụ của nó (có thể do lượng thư mục được đồng bộ hóa bên trong Vagrantfile của tôi?).
Cuối cùng, tôi đã làm cho đồng hồ hoạt động trở lại bằng cách tăng aggregateTimeout
cấu hình Webpack của tôi:
module.exports = {
watch: true,
watchOptions: {
aggregateTimeout: 10000
},
...
}
Nếu giải pháp này phù hợp với bạn, hãy thử giảm giá trị này một lần nữa, nếu không, bạn sẽ phải đợi 10 giây cho đến khi bản dựng khởi động lại mỗi khi bạn nhấn lưu. Giá trị mặc định là 300 ms .
Đối với tôi, việc xóa node_modules
và thực hiện cài đặt npm hoặc cài đặt lại sợi để cài đặt tất cả các gói đã giải quyết được vấn đề
Có vẻ như giá trị của: max_user_watches
trong/proc/sys/fs/inotify/max_user_watches
đang ảnh hưởng đến webpack
Để kiểm tra giá trị thực của bạn
$cat /proc/sys/fs/inotify/max_user_watches
16384
16384 là trong trường hợp của tôi và nó vẫn chưa đủ.
Tôi đã thử các loại giải pháp khác nhau như:
$ echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
Nhưng có vẻ như ngay cả khi tôi đã thay đổi giá trị, khi tôi khởi động lại PC của mình, nó sẽ trở lại mặc định là 16384.
Tạo tệp:
sudo nano /etc/sysctl.d/90-override.conf
Và điền nó với:
fs.inotify.max_user_watches=200000
Có vẻ như 200000 là đủ đối với tôi.
Sau khi bạn tạo tệp và thêm giá trị, chỉ cần khởi động lại PC và bạn sẽ ổn.
Một giải pháp dễ dàng trên MacOS là:
Mở hai cửa sổ đầu cuối trong cùng một thư mục chứa dự án của bạn.
Trong cửa sổ đầu tiên chạy: webpack --watch
Trong cửa sổ đầu cuối thứ hai chạy: webpack-dev-server
Tôi đã thử nhiều giải pháp khả thi và đây có vẻ là giải pháp đáng tin cậy nhất
webpack --watch
biên dịch dự án và lưu các tệp vào đĩa, tương đương với việc chạy webpack
sau mỗi lần lưu. webpack-dev-server
là một công cụ phát triển biên dịch vào bộ nhớ và cung cấp nội dung như một dịch vụ qua http. Trong mọi trường hợp đề nghị của bạn không phải là một giải pháp, vì các tập tin biên soạn sẽ không được ghi vào đĩa miễn là webpack --watch
không làm việc như đã quảng cáo ..
Sau khi thử một số chiến lược để khắc phục sự cố này, tôi đã bỏ cuộc nhưng sau đó trong khi giải quyết một vấn đề khác, tôi đã thử lại và đột nhiên --watch
lá cờ cuối cùng cũng hoạt động.
Thành thật mà nói, tôi không biết điều gì đã làm cho nó hoạt động cụ thể nhưng sau khi thực hiện các bước sau, nó mới bắt đầu hoạt động:
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++
Có thể đã xảy ra rằng trong khi cài đặt các gói này, một số phụ thuộc chỉ thêm phần còn thiếu của câu đố, ai biết được ...
Hy vọng điều này sẽ giúp bất cứ ai đang gặp khó khăn ngoài kia để làm cho nó hoạt động.
Tôi đang thêm một câu trả lời khác vì tôi tin rằng đây là giải pháp tốt nhất cho đến nay. Tôi đang sử dụng nó hàng ngày và nó thật tuyệt! Chỉ cần cài đặt thư viện này:
https://github.com/gajus/write-file-webpack-plugin
Mô tả: Buộc chương trình webpack-dev-server ghi các tệp gói vào hệ thống tệp.
Cài đặt thế nào :
npm install write-file-webpack-plugin --save-dev
Nếu điều này xảy ra đột ngột trong dự án của bạn, thì điều này có thể khắc phục sự cố.
Có thể bằng cách nào đó, các tệp theo dõi các thay đổi trong dự án của bạn mà webpack tìm kiếm đã bị hỏng. Bạn có thể tạo lại chúng chỉ bằng cách làm theo các bước đơn giản.
Tôi đã gặp câu hỏi này khi gặp sự cố tương tự - có vẻ như webpack không hoàn lại tiền, ngay cả khi chạy webpack --config.
Tôi thậm chí đã xóa gói.js và trang web vẫn hiển thị như trước khi tôi chỉnh sửa.
Đối với những người gặp phải vấn đề tương tự, cuối cùng tôi đã thực hiện tùy chọn 'trống bộ nhớ cache và tải lại cứng' trong chrome (nhấp chuột phải vào nút tải lại khi các devtools đang mở) và điều đó đã thực hiện được thủ thuật đó
Vấn đề là giữa các tệp .js và .ts. Tại sao ?
Khi xây dựng dự án, Visual Studio biên dịch các tệp phân loại thành .js và .js.map. Điều này hoàn toàn không cần thiết, bởi vì webpack cũng xử lý các tệp typecript (với bộ tải kiểu chữ tuyệt vời). Khi chỉnh sửa tệp .tsx thành phần trong Visual Studio Code hoặc Với tùy chọn compileOnSave bị vô hiệu hóa trong tsconfig.json, tệp ts đã chỉnh sửa không được biên dịch lại và gói web của tôi đang xử lý tệp .js không thực tế.
Giải pháp là vô hiệu hóa việc biên dịch các tệp typecript trong studio trực quan khi xây dựng dự án. Thêm vào
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
trong PropertyGroup của .csproj của bạn.