如何解决'fs:重新评估本地模块源不受支持' – graceful-fs

最近我做了Node v.6的切换,并开始创build更多的问题,运行正常的版本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 

而在/ node_modules文件夹中安装npm -rf node_modules和所有其他插件和模块(甚至通过npm -rf 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回购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 

所以,现在我被curlenlty卡在了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的代码?
  • 有一些全球交换机使用特定的软件包版本?
  • 重新安装一切?

我有这个问题,我可以通过更新npm来解决这个问题

 sudo npm update -g npm 

在更新之前, npm info graceful-fs | grep 'version:'的结果是npm info graceful-fs | grep 'version:' npm info graceful-fs | grep 'version:'是:

 version: '3.3.12' 

更新后的结果是:

 version: '3.9.3' 

inputnpm 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-fsnpm update graceful-fs自己。 gulp需要更新他们的依赖关系。 所以,如果你有这样的情况,你是不幸的。 但是,你可能会打开一个与旧的依赖项目的问题 – 即gulp

解决这个错误与重新安装吞咽

 npm uninstall gulp npm install gulp 

删除node_modules文件夹内容并正在运行

 npm install bower npm install 

解决了我的问题!

如此处所述,您也可以尝试该命令

 npm cache clean 

这对我来说固定了,其他步骤没有完全产生结果(除了更新所有内容之外)。

只需要指出,cordova带有graceful-fs依赖的npm,所以如果你使用Cordova,确保它是最新的,所以你也可以从中获得最新的优雅。

我能够通过以下方式解决它:

  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.node中缺less文件

我查找的binding.node文件,我发现它…

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

复制名称为binding.node的正确的文件,它的工作原理。