如何修复'fs:不支持重新评估本机模块源'-graceful-fs


162

最近,我切换到了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

我试图做的是通过n(https://www.npmjs.com/package/n)降级到Node 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.

这里的策略可能是什么:

  • 手动修补所有包含grace-fs <4.0.0的dep?
  • 是否有全局切换使用特定的软件包版本?
  • 重新安装一切?

我对Gulp和某些模块有相同的问题。我通过升级模块以使用最新的graceful -fs来修复了模块,但是我不确定是否有解决方案来修复尚未升级的其他模块。
Jeremy Chone

看来此问题不会在Gulp 3.x中修复,您将不得不升级到Gulp 4.x github.com/gulpjs/gulp/issues/1571
dtothefp,2016年

Answers:


170

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

sudo npm update -g npm

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

version: '3.3.12'

更新后的结果是:

version: '3.9.3'

谢谢@豪尔赫。这有助于解决问题。每次我在应用程序目录中运行npm install时,仍然会出现高亮显示graceful-fs@4.1.4的appname@0.1.x / path / of / app。但我现在已经忍受了。
2016年

大家好,@ Geo,在这里,同样,请看Analog-nico的答案,因为同一工具的其他版本严格依赖于这些版本,所以我们具有同一软件包的不同版本。为了摆脱警告,我们需要升级所有警告或寻找替代产品。
阿西莫夫

5
这对我没有用,我不得不跑步nvm use v6.2.1
Nicwenda

46
请注意,npm info graceful-fs -v返回的版本为npm(与running相同npm -v),而不是graceful -fs。要获得grace-fs版本,请使用npm info graceful-fs | grep version:
nstCactus

6
@Asimov这对我也有用。另外,如果您最近重新安装了NodeJS(我通过他们网站上的软件包安装了NodeJS,然后将其替换为homebrew的软件包),则可以rm -rf node_modules && npm install在项目主文件夹中运行。
Dylanthepiguy '16

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/gulpjs/gulp/issues/1571
JBE,

2
这就是我的事情,最终推开了消除口香糖
Darko Z

就我而言,v4之前的graceful-fs模块依赖项来自npm本身(版本3.10.3),是通过cmd-shim@2.0.2。在使用列出全局 graceful-fs依赖项之前,我没有看到这一点npm list -g graceful-fs
Rusty Shackleford

这帮助我解决了。我的graceful-fs软件包是最新的,但其他一些软件包仍依赖较旧的版本。
skerit '16

21

通过重新安装gulp解决了该错误

npm uninstall gulp
npm install gulp

听起来像gulp可以解决此问题-以前不记得我是否使用--save-dev安装了gulp,但您的方式在我的项目文件夹中有效。
降落

也为我解决了该问题
Shady Keshk '17

是的,看起来像是一个较旧的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保持一致




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.