最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

node.js中的区分大小写的问题

运维笔记admin14浏览0评论

node.js中的区分大小写的问题

node.js中的区分大小写的问题

我有2个文件,extendableError.js

class ExtendableError extends Error {
  constructor(message) {
    super(message)
    this.name = this.constructor.name
    this.message = message
    if (typeof Error.captureStackTrace === 'function') {
      Error.captureStackTrace(this, this.constructor)
    } else {
      this.stack = new Error(message).stack
    }
  }
}

module.exports = ExtendableError
回答如下:

首先,出于兼容性原因,macOS选择了不区分大小写的文件系统。但这并不意味着您必须承担它,Disk Utility可用于将分区重新格式化为区分大小写模式。如果你这样做,node.js会报告错误,因为你试图require错误的模块名称。

然后,让我们谈谈你的测试结果。关键问题是你在require中哪一个duplicatedError.js,如果你稍微改变一下:

//change the required name to lowercase extendableError
const ExtendableError = require('./extendableError')

class DuplicatedError extends ExtendableError {
  constructor(message) {
    super(message)
  }
}

module.exports = DuplicatedError

测试结果如下:

false
true

您甚至可以尝试修改duplicatedError.js,如下所示:

//change the required name to extENDableError
const ExtendableError = require('./extENDableError')

class DuplicatedError extends ExtendableError {
  constructor(message) {
    super(message)
  }
}

module.exports = DuplicatedError

结果应该是

false
false

所以我认为这不是模块缓存,你有两件事需要明确:

  1. 默认情况下,macOX是不区分大小写的文件系统
  2. 即使你只有一个文件extendableError.js,但你require两次不同的名字,如:require(./extendableError)require(./ExtendableError)require(./extENDableError),trey将被视为三个模块。
发布评论

评论列表(0)

  1. 暂无评论