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


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

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

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 159

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 не решил "ту же" проблему для меня.

в отчете говорится :отсутствует файл... вендор / win32-x64-48 / привязка.узел

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

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

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

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

npm uninstall -g cordova
npm install -g cordova