「fs:ネイティブモジュールソースの再評価はサポートされていません」を修正する方法-graceful-fs


162

最近、ノード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

私がやろうとしたことは、n(https://www.npmjs.com/package/n)を介してノード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を含むすべてのdepに手動でパッチを適用しますか?
  • 特定のパッケージバージョンを使用するグローバルスイッチがありますか?
  • すべてを再インストールしますか?

Gulpと一部のモジュールで同じ問題が発生しています。モジュールをアップグレードして最新のgraceful-fsを使用するようにモジュールを修正しましたが、まだアップグレードされていない他のモジュールを修正する解決策があるかどうかはわかりません。
Jeremy Chone 2016年

これはGulp
dtothefp

回答:


170

私はこの問題を抱えていて、更新することでこれを修正することができました npm

sudo npm update -g npm

更新前の結果npm info graceful-fs | grep 'version:'は次のとおりです。

version: '3.3.12'

更新後の結果は次のとおりです。

version: '3.9.3'

@Jorgeに感謝します。これは問題の修正に役立ちました。アプリディレクトリでnpm installを実行するたびに、gracename-fs @ 4.1.4が強調表示されたままappname@0.1.x / path / of / appが引き続き表示されます。でも今は一緒に暮らしています。
2016年

こんにちは@Geo、同じここで、analog-nicoの答えを見てください。他のツールがそれらのバージョンに厳密に依存しているため、同じパッケージの異なるバージョンがあります。警告を取り除くには、すべてをアップグレードするか、代替品を探す必要があります。
Asimov

5
これは私にはうまくいきませんでした、私は走らなければなりませんでしたnvm use v6.2.1
Nicwenda

46
npm info graceful-fs -vは、npmのバージョン(runningと同じnpm -v)を返し、graceful -fsではないことに注意してください。graceful-fsバージョンを取得するには、などを使用しますnpm info graceful-fs | grep version:
nstCactus

6
@Asimovこれも私のために働いた。また、最近NodeJSを再インストールした場合(私は彼らのWebサイトのパッケージを介してNodeをインストールし、それを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-fsgulp依存関係を更新する必要があります。したがって、このようなケースがある場合、あなたは運が悪いです。ただし、古い依存関係を持つプロジェクトの問題を開く場合がありますgulp


13
参考までに、あなたの具体的な例でgulpは、バージョン3ではバージョン4のみが変更されません。github.com
JBE

2
これが私にとっての最後のプッシュであり、gulpを削除する
Darko Z

私の場合、v4以前のgraceful-fsモジュールの依存関係は、npmそれ自体(バージョン3.10.3)からのものcmd-shim@2.0.2でした。を使用してグローバル graceful-fs依存関係を一覧表示するまで、これはわかりませんでしたnpm list -g graceful-fs
Rusty Shackleford 2016

これで解決しました。私のgraceful-fsパッケージは最新でしたが、他のいくつかのパッケージはまだ古いバージョンに依存しています。
skerit

21

このバグを再インストールgulpで解決しました

npm uninstall gulp
npm install gulp

gulpのようなサウンドでこの問題が修正されました。以前に--save-devを使用してgulpをインストールしたかどうかを思い出せませんでしたが、私のプロジェクトフォルダーからあなたの方法が機能しました。
着陸

私の問題も修正しました
Shady Keshk 2017年

ええ、古いGulp依存問題のようです。
serraosays

1

node_modulesフォルダーの内容を削除して実行する

npm install bower
npm install

私のために問題を解決しました!


1

ここで説明するように、コマンドを試すこともできます

npm cache clean

(すべてを更新する以外の)他の手順で結果が完全には得られなかったため、これで解決しました。


1

Cordovaはgraceful-fs依存関係を持つ独自のnpmを持っていることを指摘してください。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

レポートには、次のように記載されています:... vendor / win32-x64-48 / binding.nodeにファイルがありません

binding.nodeファイルを探しましたが、次の場所にあります...

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

binding.nodeという名前の正しいファイルをコピーすると、機能します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.