【问题标题】:fs.js module in nodejs requiring itself?nodejs中的fs.js模块需要自己吗?
【发布时间】:2017-05-03 16:15:17
【问题描述】:

我目前正在学习nodeJS并运行v6.10.2版本,我正在查看graceful-js文件夹中的fs.js模块源代码并注意到其中的代码:

'use strict'

var fs = require('fs')

module.exports = clone(fs)

function clone (obj) {
  if (obj === null || typeof obj !== 'object')
    return obj

  if (obj instanceof Object)
    var copy = { __proto__: obj.__proto__ }
  else
    var copy = Object.create(null)

  Object.getOwnPropertyNames(obj).forEach(function (key) {
    Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))
  })

  return copy
}

一个模块如何要求自身它与克隆关键字有关吗?我也找不到任何其他名为 fs.js 的模块。

【问题讨论】:

  • 这不是需要自身的内置fs 模块。这是实际fs 模块中需要的优雅-fs 替换模块。
  • 实际 fs 模块的代码在这里:github.com/nodejs/node/blob/master/lib/fs.js
  • @jfriend00 我在安装的 nodejs 文件夹中找不到实际的 fs 模块,graceful-fs 模块如何需要它?
  • 它是内置的,而不是单独的文件。更容易在 github 上找到内置代码或在调试器中单步执行。

标签: node.js


【解决方案1】:

您正在查看 graceful-fs 包的部分代码,它是 NodeJS 中内置 fs 模块的包装器。所以这段代码不需要自己——require语句导入内置的fs模块,其余代码克隆它,以便graceful-fs包的其他部分可以覆盖一些默认fs功能而不影响原始模块。

【讨论】:

  • graceful-fs 包是干什么用的?
  • 来自package homepage 我链接到:“graceful-fs 作为 fs 模块的替代品,进行了各种改进。这些改进旨在规范跨不同平台和环境的行为,并使文件系统访问对错误更具弹性。”
猜你喜欢
  • 2012-09-03
  • 1970-01-01
  • 1970-01-01
  • 2019-01-15
  • 2018-10-19
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多