'fs : 기본 모듈 소스 재평가는 지원되지 않습니다'를 수정하는 방법-graceful-fs


162

최근에 Node v.6으로 전환했으며 일반 빌드 grunt / gulp / webpack을 실행하는 데 점점 더 많은 문제가 발생하기 시작했습니다.

예를 들면 다음과 같습니다.

$ gulp
[14:02:20] Local gulp not found in ~/_Other/angular-2-ts/angular2-seed
[14:02:20] Try running: npm install gulp

rm -rf node_modulesgulp 및 기타 모든 플러그인과 모듈은 / node_modules 폴더에 설치되어 있으며 심지어는이를 통해 다시 설치됩니다 .

이러한 오류의 대부분은 다음과 같은 줄을 가지고 있습니다.

(node:42) fs: re-evaluating native module sources is not supported. 
If you are using the graceful-fs module, 
please update it to a more recent version.

임의의 숫자로 42

그 문제와 마찬가지로 제출 한 angular2-seed repo https://github.com/mgechev/angular2-seed/issues/902

내가 시도한 것은 n ( https://www.npmjs.com/package/n )을 통해 Node v.5로 다운 그레이드하는 것입니다. 그런 다음 모든 node_modules폴더를 제거한 다음 수행하십시오.

npm info graceful-fs -v
3.3.6

좋아, 업그레이드하거나 제거하고 새로 설치하십시오.

npm i graceful-fs@latest
npm i graceful-fs@4.1.4
sudo npm i graceful-fs@4.1.4 -g

모든 결과

npm info graceful-fs -v
3.3.6

그래서 지금은 graceful-fs 3.3.6에 붙어 있거나 일부 모듈 의존성에서는 더 나쁩니다.

$ angular2-seed
$ npm install

//other lines..
npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before 
will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 
as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.

여기서 전략은 무엇입니까?

  • graceful-fs <4.0.0을 포함하는 모든 뎁을 수동으로 패치 하시겠습니까?
  • 특정 패키지 버전을 사용하기위한 글로벌 스위치가 있습니까?
  • 모든 것을 다시 설치 하시겠습니까?

Gulp 및 일부 모듈에서 동일한 문제가 있습니다. 최신 grace-fs를 사용하도록 모듈을 업그레이드하여 모듈을 수정했지만 아직 업그레이드되지 않은 다른 모듈을 수정하는 솔루션이 있는지 확실하지 않습니다.
Jeremy Chone

이것은 Gulp 3.x에서 수정되지 않은 것으로 보입니다. Gulp 4.x로 업그레이드해야합니다. github.com/gulpjs/gulp/issues/1571
dtothefp

답변:


170

이 문제가 있었고 업데이트하여 문제를 해결할 수있었습니다 npm

sudo npm update -g npm

업데이트 전의 결과 npm info graceful-fs | grep 'version:'는 다음과 같습니다.

version: '3.3.12'

업데이트 후 결과는 다음과 같습니다.

version: '3.9.3'

감사합니다 @Jorge. 문제 해결에 도움이되었습니다. app 디렉토리에서 npm install을 실행할 때마다 graceful-fs@4.1.4와 함께 appname@0.1.x / path / of / app가 여전히 표시됩니다. 하지만 지금은 그와 함께 살고 있습니다.
Geo

안녕하세요 @Geo, 여기에서도, analog-nico의 답변을보십시오. 다른 도구는 해당 버전에 엄격하게 의존하기 때문에 동일한 패키지의 다른 버전이 있습니다. 경고를 없애려면 모든 경고를 업그레이드하거나 교체품을 찾아야합니다.
Asimov 2016 년

5
이것은 나를 위해 작동하지 않았다, 나는 실행했다nvm use v6.2.1
Nicwenda

46
npm info graceful-fs -vnpm 버전 (running npm -v과 동일 ) 및 NOT graceful-fs 를 반환합니다 . graceful-fs 버전을 얻으려면 다음과 같은 것을 사용하십시오 npm info graceful-fs | grep version:.
nstCactus

6
@ Asimov 이것은 저에게도 효과적이었습니다. 또한 최근에 NodeJS를 다시 설치 한 경우 (웹 사이트의 패키지를 통해 노드를 설치 한 다음 homebrew의 노드로 교체 한 경우) rm -rf node_modules && npm install프로젝트 홈 폴더에서 실행 합니다.
Dylanthepiguy

73

입력 npm list graceful-fs하면 graceful-fs의 어떤 버전이 현재 설치되어 있는지 확인할 수 있습니다.

제 경우에는 다음을 얻었습니다.

npm list graceful-fs

@request/promise-core@0.0.1 /projects/request/promise-core
+-- gulp@3.9.1
| `-- vinyl-fs@0.3.14
|   +-- glob-watcher@0.0.6
|   | `-- gaze@0.5.2
|   |   `-- globule@0.1.0
|   |     `-- glob@3.1.21
|   |       `-- graceful-fs@1.2.3        <==== !!!
|   `-- graceful-fs@3.0.8 
`-- publish-please@2.1.3
  +-- nsp@2.4.0
  | `-- nodesecurity-npm-utils@4.0.1
  |   `-- silent-npm-registry-client@2.0.0
  |     `-- npm-registry-client@7.1.0
  |       `-- graceful-fs@4.1.3 
  `-- read-pkg@1.1.0
    `-- load-json-file@1.1.0
      `-- graceful-fs@4.1.4

보시다시피 gulp아주 오래된 버전에 달려 있습니다. 불행히도을 사용하여 직접 업데이트 할 수 없습니다 npm update graceful-fs. gulp의존성을 업데이트해야합니다. 따라서 이와 같은 경우에 운이 없습니다. 그러나 오래된 의존성, 즉 프로젝트에 대한 문제를 열 ​​수 있습니다 gulp.


13
참고로 특정 예 gulp에서 버전 3에서는 변경되지 않지만 버전 4에서만 변경됩니다. github.com/gulpjs/gulp/issues/1571
JBE

2
이것은 나를위한 것이었다, 꿀꺽 꿀꺽 제거하기위한 마지막 추진
Darko Z

필자의 경우 v4 이전 graceful-fs모듈 종속성 npm은를 통해 자체 (버전 3.10.3)에서 발생했습니다 cmd-shim@2.0.2. 를 사용하여 전역 graceful-fs 종속성을 나열 할 때까지 이것을 보지 못했습니다 npm list -g graceful-fs.
Rusty Shackleford

이것은 그것을 해결하는 데 도움이되었습니다. graceful-fs 패키지는 최신 버전이지만 다른 패키지는 여전히 이전 버전을 사용했습니다.
skerit

21

꿀꺽 꿀꺽 다시 설치 하여이 버그를 해결

npm uninstall gulp
npm install gulp

gulp와 같은 소리 로이 문제가 해결되었습니다 .-save-dev로 gulp를 설치했는지 여부를 기억하지 못했지만 귀하의 방식은 내 프로젝트 폴더에서 작동했습니다.

나에게도 문제가 해결되었습니다
Shady Keshk

예, 오래된 Gulp 의존성 문제처럼 보입니다.
serraosays

1

node_modules 폴더 내용 삭제 및 실행

npm install bower
npm install

나를 위해 문제를 해결했습니다!


1

여기 에 설명 된대로 명령을 시도 할 수도 있습니다.

npm cache clean

다른 단계가 결과를 완전히 얻지 못한 후 (모든 것을 업데이트하는 것 제외) 저를 위해 그것을 고쳤습니다.


1

Cordova가 graceful-fs 종속성을 가진 자체 npm을 가져 오는 것을 지적하기 위해 Cordova를 사용하는 경우 Cordova가 최신인지 확인하여 최신 graceful-fs도 가져옵니다.


1

나는 그것을 고칠 수 있었다 :

  1. 에 의해 업데이트 package.json
  2. node_modules 폴더 삭제
  3. 실행 npm install

0

nvm을 실행중인 경우 다음을 실행하려고 할 수 있습니다. 이렇게하면 nvm use <desired-node-version>노드가 npm과 일치합니다.


0

또는 업데이트하십시오 node:

brew upgrade node

brew(내 경우와 같이) 함께 설치 된 경우. sudo npm update -g npm나를 위해 "같은"문제를 해결하지 못했습니다.



0

Cordova 프로젝트의 경우 cordova -g를 제거하고 설치하면 문제가 해결되었습니다.

npm uninstall -g cordova
npm install -g cordova
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.