Как исправить "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 ответов:
у меня была эта проблема, и я смог исправить это, обновив
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
не решил "ту же" проблему для меня.
в отчете говорится :отсутствует файл... вендор / win32-x64-48 / привязка.узел
Я искал переплет.файл узла, и я нахожу его...
https://github.com/sass/node-sass-binaries
скопируйте правильный файл с привязкой имени.узел и он работает.