답변:
참고 :이 OS X이 손상받을 폴더와 더 이상 보낼 수 있습니다 보인다 fsevents
( watchpack
/ chokidar
자체 / 파인더 사용) 및 하위 폴더를. 이것이 당신에게 일어난 일인지 확신 할 수는 없지만 저와 동료에게는 매우 실망 스러웠습니다.
손상된 상위 폴더의 이름을 바꿀 수 있었고 예상대로 이벤트가 즉시 발생하는 것을 볼 수있었습니다. 자세한 내용은이 블로그 게시물을 참조하십시오. http://feedback.livereload.com/knowledgebase/articles/86239-os-x-fsevents-bug-may-prevent-monitoring-of-certai
위 링크에서 권장하는 수정 사항은 다음과 같습니다.
처음 두 가지는 우리에게 효과가 없었고 Spotlight 제안을 시도하지 않았으며 재현이 필요하다는 것이 입증되지 않았습니다.
우리는 Finder를 열고 즉시 나타날 때까지 각각의 연속적인 상위 폴더에 파일을 생성하여 루트 문제 폴더를 찾을 수있었습니다 (Finder가이 버그로 인해 망가질 것이므로). 업데이트되지 않는 가장 루트 폴더가 범인입니다. 우리는 mv
그것을 mv
원래 이름으로 되돌려 놓은 다음 감시자가 일했습니다.
부패의 원인이 무엇인지는 모르겠지만 문제를 해결하게되어 기쁩니다.
watchify
어떤 단계도 나와 함께 작동하지 않았으므로 poll arg를 사용하게되었습니다. 많은 사람들이 watchify 대신 browserify에 투표 인수를 전달하고 있습니다. 내 코드는 다음과 같습니다.watchify(browserify(config.src,{}), {poll:100});
npm install
및 디렉토리 이름 변경은 동기화 클라이언트가 구현되는 방식과 같이 매우 집약적 인 작업입니다.
코드가 다시 컴파일되지 않으면 감시자 수를 늘리십시오 (Ubuntu에서).
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
sudo sysctl -p
Mavericks에서는 작동하지 않습니다. 새로운 아이디어가 있습니까?
ModuleConcatenationPlugin
. 생략 ModuleConcatenationPlugin
하면 계속 시청할 수 있습니다.
/etc/sysctl.conf
직접 보고 변경하려고 했습니까? resp 변경. 그 키-값 설정? (당신이 임시을 (해당하는 명령을 찾을 수없는 경우 sysctl -p
), 그럼 그것은 하나의 재부팅, 그리고 당신은 좋은해야합니다 ...)
sudo sysctl -a | grep max_user_watches
내 웹팩 구성 파일에 다음 코드를 추가하면 문제가 해결되었으므로 도움이되기를 바랍니다. HMR (핫 모듈 교체)의 성능을 저하 시키므로 node_modules 폴더를 무시하는 것을 잊지 마십시오.
watchOptions: {
poll: true,
ignored: /node_modules/
}
watch: true
잘 작동 할 수 있습니다. 폴링은 한 프로그램이나 장치가 다른 프로그램이나 장치를 지속적으로 확인하여 현재 상태를 확인하고 일반적으로 여전히 연결되어 있는지 또는 통신을 원하는지 확인하는 것입니다. 따라서 설정을 poll: true
통해 webpack은 프로그램 상태를 확인하여 변경 사항이 있는지 또는 적어도 내가 생각하는 일이 일어나고 있는지 확인할 수 있습니다.
poll
옵션은 watchpack에
WebStorm으로 작업 할 때이 문제가 발생했습니다.
설정-> 시스템 설정-> "안전 쓰기"를 비활성화 하면 문제가 해결되었습니다.
권장 사항은 WebPack 문제 해결 에서 찾았습니다.
가능한 해결책을 추가하기 위해 : Dropbox 폴더 안에 프로젝트 폴더가 있었는데,이 폴더를 옮기면 문제가 해결되었습니다. (OS X)
폴더 대소 문자 구분이 제 문제였습니다. require ()에 대한 내 코드 호출에는 모두 소문자 경로 이름이 있지만 실제로 디렉토리에는 대문자가 있습니다. 내 모든 디렉토리의 이름을 소문자로 변경하고 웹팩 시청이 즉시 작동했습니다.
가상 머신 (Vagrant / Virtualbox)에서 웹팩을 실행하고 호스트 플랫폼에서 파일을 변경하는 경우 공유 폴더의 파일 업데이트가 Ubuntu에서 inotify를 트리거하지 않을 수 있습니다. 그러면 변경 사항이 webpack에서 선택되지 않습니다.
제 경우에는 de guest (vi)에서 파일을 편집하고 저장하면 webpack이 트리거되었습니다. 호스트 (PhpStorm, 메모장 또는 기타 응용 프로그램에서)에서 편집하면 내가 한 일이 웹 팩을 트리거하지 않습니다.
vagrant-fsnotify 를 사용하여 해결했습니다 .
vagrant-notify-forwarder
더 매직 재 장전을 위해
vagrant plugin install vagrant-notify-forwarder
나를 위해 영구적 인 솔루션을 만들었습니다
업데이트 : 전체 디렉토리를 삭제하고 저장소에서 새로 복제하면 문제가 해결됩니다.
Vim을 사용하는 경우 기본 자동이 아닌 backupcopy를 yes로 설정해야합니다. 그렇지 않으면 Vim은 때때로 원본 파일의 이름을 바꾸고 새 파일을 생성하여 webpack watch를 망칠 것입니다.
https://github.com/webpack/webpack/issues/781
이 경우 vim 설정에 다음을 추가하십시오.
backupcopy = yes 설정
.vue 파일에서 동일한 문제가 발생했습니다. 서버가 다시 시작되면 모두 정상적으로 작동했지만 다음 저장시 더 이상 다시 컴파일되지 않았습니다. 문제는 대문자 하나가있는 가져 오기 파일 경로에있었습니다. 모든 것이 서버 재부팅에서 작동하기 때문에이 문제를 파악하는 것은 매우 어렵습니다. 경로의 사례를 확인하십시오.
나를 위해 다시 컴파일하지 않았지만 webpack이 폴더 (또는 파일)가 아닌 종속성 그래프를 감시한다는 것을 깨달았습니다 / 기억했습니다. 확실히 내가 변경 한 파일은 아직 그 그래프의 일부가 아니 었습니다.
나는 비슷한 문제가 있었는데, 내가 만든 변경 사항을 포착하는 워치 모드웨어의 웹팩이나 롤업이 없었습니다. 응용 프로그램에서 아직 가져 오지 않은 모듈 (.tsx 파일) (예 : 진입 점 인 App.ts)을 변경하고 빌드 도구에서 오류를보고 할 것으로 예상했기 때문에 기본적으로 내 잘못이라는 것을 알았습니다. 거기에 만들었습니다.
문제를 해결하는 방법은 가져 오기 경로에서 대문자 오류를 찾는 것이 었습니다. 파일 시스템의 폴더는 첫 글자가 소문자이고 가져 오기 경로는 대문자입니다. 모든 것이 잘 컴파일되었으므로 이것은 단지 webpack watch include 문제였습니다.
rsync 동기화와 함께 Vagrant (2.1.15)를 사용하는 VirtualBox (5.2.18) Ubuntu (18.04) VM에서도이 문제가 발생했습니다. 갑자기 첫 번째 빌드는 훌륭하게 실행되지만 Webpack은 나중에 fs.inotify.max_user_watches=524288
설정 하더라도 변경 사항을 고려하지 않습니다 . poll: true
Webpack 구성에 추가 해도 도움이되지 않았습니다.
만 vagrant-notify-forwarder
(방랑-fsnotify은 어떤 이유로하지 않았다)했다,하지만 그때는 호스트에 파일을 저장 한 후 너무 빨리 일어난 재 구축하고 그 rsync를 어쩌면 인해 양 (그 작업을 완료하는 데 시간이 충분하지 않은 가정 내 Vagrantfile 내부의 동기화 된 디렉토리?).
마지막으로 aggregateTimeout
Webpack 구성에서를 늘려 시계를 다시 작동하게했습니다 .
module.exports = {
watch: true,
watchOptions: {
aggregateTimeout: 10000
},
...
}
이 솔루션이 효과가 있다면이 값을 다시 낮추십시오. 그렇지 않으면 저장을 누를 때마다 빌드가 다시 시작될 때까지 10 초 동안 기다려야합니다. 기본값은 300ms 입니다.
그것은의 값을 보인다 : max_user_watches
(가)에 /proc/sys/fs/inotify/max_user_watches
영향을 미치는 웹팩입니다
실제 가치를 확인하려면
$cat /proc/sys/fs/inotify/max_user_watches
16384
16384는 제 경우 였지만 여전히 충분하지 않았습니다.
다음과 같은 다른 유형의 솔루션을 시도했습니다.
$ echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
그러나 값을 변경해도 PC를 다시 시작하면 기본값 인 16384로 돌아갈 것 같습니다.
파일을 만듭니다.
sudo nano /etc/sysctl.d/90-override.conf
다음으로 채 웁니다.
fs.inotify.max_user_watches=200000
200000이면 충분 해 보입니다.
파일을 생성하고 값을 추가 한 후 PC를 다시 시작하면 괜찮습니다.
MacOS의 쉬운 솔루션은 다음과 같습니다.
프로젝트가있는 동일한 디렉토리에서 두 개의 터미널 창을 엽니 다.
첫 번째 터미널 창에서 다음을 실행합니다. webpack --watch
두 번째 터미널 창에서 다음을 실행합니다. webpack-dev-server
나는 많은 가능한 해결책을 시도했고 이것이 가장 신뢰할 수있는 것 같다
webpack --watch
프로젝트를 컴파일하고 파일을 디스크에 webpack
저장합니다. 이는 저장 후 실행하는 것과 같습니다 . webpack-dev-server
http를 통해 메모리로 컴파일하고 콘텐츠를 서비스로 제공하는 개발 도구입니다. webpack --watch
광고 된대로 작동하지 않는 한 컴파일 된 파일이 디스크에 기록되지 않기 때문에 어떤 경우에도 귀하의 제안은 해결책이 아닙니다 .
이 문제를 해결하기 위해 몇 가지 전략을 시도한 후 결국 포기했지만 다른 문제를 해결하는 동안 다시 시도하고 갑자기 --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
프로젝트에서 갑자기 발생한 경우 문제를 해결할 수 있습니다.
어떻게 든 웹팩이 찾는 프로젝트 변경 사항을 추적하는 파일이 손상되었을 수 있습니다. 간단한 단계를 따라 다시 만들 수 있습니다.
.js와 .ts 파일 사이에 문제가있었습니다. 왜 ?
프로젝트 빌드에서 Visual Studio는 typescript 파일을 .js 및 .js.map으로 컴파일합니다. webpack은 (awesome-typescript-loader로) typescript 파일도 처리하기 때문에 이것은 완전히 필요하지 않습니다. Visual Studio Code 에서 componet .tsx 파일을 편집 하거나 tsconfig.json에서 compileOnSave 옵션을 비활성화하면 편집 된 ts 파일이 다시 컴파일되지 않고 내 웹팩이 비정상적인 .js 파일을 처리했습니다.
해결책은 프로젝트 빌드시 Visual Studio에서 typescript 파일 컴파일을 비활성화하는 것입니다. 더하다
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
.csproj의 PropertyGroup에서.