NodeJS – 有时我的导出方法不可用

这很奇怪…

我有一个模块(tools.js),有一些我喜欢使用的方便的函数,比如stemming或者其他东西,它们以通常的方式导出:

tools.js

var stem = function(str) { // do some stuff return str; } module.exports = { stem: stem } 

而我在其他模块中使用它,就像你所期望的那样:

 var tools = require('tools.js'); var someProcess = function(str) { return tools.stem(str); } 

这有效。

其他时候,我得到一个错误,如:

 TypeError: Object #<Object> has no method 'stem' 

我希望如果我没有出口我的function。 但是我有,因为这个完全相同的代码工作正常,我上次运行它,我甚至没有重新启动过程。

一旦中断,我可以重新启动进程,它会很好,但过了一段时间(通常在其他函数被调用后),它会中断。 几乎就像有一些命名空间的事情正在发生,它正在被覆盖。 但我认为Node并没有真正受到这个困扰,因为每个模块都是命名空间的。

有任何想法吗?

基本上,这是与循环引用,在这里解决: https : //github.com/joyent/node/issues/1694