Как исправить "fs: переоценка собственных источников модулей не поддерживается" - graceful-fs

недавно я переключился на 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

в то время как gulp и все другие плагины и модули установлены (и даже переустановлены через rm -rf node_modules) в папку /папки 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-семя РЕПО https://github.com/mgechev/angular2-seed/issues/902

то, что я пытался сделать, это перейти на узел v. 5 через n (https://www.npmjs.com/package/n) - это сработало. Затем удалите все node_modules папки, затем сделать

npm info graceful-fs -v
3.3.6

ok, позволяет обновить или удалить и установить новый:

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

так что теперь я застрял со следующими изящный-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.

какой может быть стратегия здесь:

  • вручную исправьте все deps, которые содержат graceful-fs
  • есть какой-то глобальный коммутатор для использования конкретной версии пакета?
  • переустановить все?

11 ответов


у меня была эта проблема, и я смог исправить это, обновив npm

sudo npm update -g npm

перед обновлением результат npm info graceful-fs | grep 'version:' было:

version: '3.3.12'

после обновления результат такой:

version: '3.9.3'

тип 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.


решена эта ошибка с переустановкой gulp

npm uninstall gulp
npm install gulp

удаление содержимого папки node_modules и запуск

npm install bower
npm install

решил проблему для меня!


Как рассказали здесь, вы также можете попробовать команду

npm cache clean

это исправило его для меня, после того, как другие шаги не полностью дали результаты (кроме обновления всего).


просто чтобы указать, что cordova приносит свой собственный npm с зависимостью graceful-fs, поэтому, если вы используете Cordova, убедитесь, что он последний, поэтому вы также получаете последние graceful-fs.


я смог исправить это:

  1. обновление package.json
  2. удаление папки node_modules
  3. выполнения npm install

Если вы используете nvm, вы можете запустить nvm use <desired-node-version> это сохраняет узел в соответствии с npm


или попробуйте обновить node:

brew upgrade node

если он установлен с brew (как в моем случае). sudo npm update -g npm не решил "ту же" проблему для меня.


в отчете говорится :файл отсутствует... vendor/win32-x64-48/binding.узел

Я искал переплет.файл узла, и я нахожу его...

https://github.com/sass/node-sass-binaries

скопируйте правильный файл с привязкой имени.узел и он работает.


в случае моего Cordova-project удаление и установка cordova-G исправили проблему для меня.

npm uninstall -g cordova
npm install -g cordova