如何解决'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-fs
来npm 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,确保它是最新的,所以你也可以从中获得最新的优雅。
我能够通过以下方式解决它:
- 通过
package.json
更新 - 删除node_modules文件夹
- 执行
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的正确的文件,它的工作原理。