真奇怪

我有一个模块(tools.js),该模块具有一些我喜欢使用的便捷功能,例如词干或其他任何东西,它们以通常的方式导出:

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'


如果没有导出我的函数,我会期望的。但是我有,因为这完全相同的代码在我上次运行时运行良好,所以我什至没有重新启动该过程。

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

有任何想法吗?

最佳答案

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

关于node.js - NodeJS-有时我的导出方法不可用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13806071/

10-11 03:40