1

これは奇妙です...

ステミングなど、使用したいいくつかの便利な機能を備えたモジュール(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'

関数をエクスポートしていなかった場合に期待することです。しかし、前回実行したときとまったく同じコードが正常に機能したため、プロセスを再起動していません。

壊れたら、プロセスを再起動して問題ありませんが、しばらくすると (通常は他の関数が呼び出された後)、壊れます。あたかもいくつかの名前空間が進行中であり、それが上書きされているかのようです。しかし、各モジュールには名前空間が付けられているため、ノードはこれに悩まされていないと思いました...

何か案は?

4

1 に答える 1

1

基本的には、ここで対処する循環参照に関係しています: https://github.com/joyent/node/issues/1694

于 2012-12-11T10:48:52.977 に答える