我需要另一个文件中已经需要的模块,但是当我获取对象时,它的许多键都未定义。一堆键在那里,但有些不是,即使在我调用了一些暴露的函数之后。如果我 console.log 对象,键看起来就在那里。
例子:
var mod = require('myModule')
console.log(mod) // { 'aKey':[Function], 'doStoff':[Function] }
console.log(mod.aKey) // undefined
mod.doStoff() // calls 'aKey'
//TypeError: Object #<Object> has no method 'aKey'
//this error is thrown inside myModule
如果这个模块在加载时做了一些愚蠢的事情,这不会让我过于惊讶,但是模块已经被加载并且我已经在主 js 文件中使用了它。
我唯一能想到的就是不正常:我在主 js 文件中需要这个模块(并且它可以工作),但它不起作用的地方是在 main.js 文件中需要的模块内。
为了更清楚->
- main.js 需要 myModule
- main.js 需要 otherModule
- otherModule 需要 myModule
myModule 是由 npm 安装的,但我在 node_modules 文件夹中对 otherModule 进行原型设计,直到我把它放在某个地方以便 npm 安装它。
我不明白为什么这会导致问题;我认为从 require 返回的对象被保存在 require 缓存中 - 原样 - 这样当它被需要时,你会得到相同的对象。看来我的对象已被部分删除或什么的。
这是什么原因造成的?我应该怎么做?