Как исправить "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
.
удаление содержимого папки node_modules и запуск
npm install bower
npm install
решил проблему для меня!
Как рассказали здесь, вы также можете попробовать команду
npm cache clean
это исправило его для меня, после того, как другие шаги не полностью дали результаты (кроме обновления всего).
просто чтобы указать, что cordova приносит свой собственный npm с зависимостью graceful-fs, поэтому, если вы используете Cordova, убедитесь, что он последний, поэтому вы также получаете последние graceful-fs.
Если вы используете 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