2016-11-17 2 views
0

私はgruntビルドプロセス用のユーティリティモジュールをいくつかビルドしようとしています。どうやら私は、モジュールシステムがどのように機能するかについて混乱しているが、ここで私は(それは無関係ですので、機能ロジックを除外)したものである:だからノードのmodule.exportsが空のオブジェクトとして戻ってきます

var modifiers = require('./modifiers'); 

// later in file.... 
grunt.log.writeln(JSON.stringify(modifiers)); //outputs: {} 

:呼び出しファイルから

var modifiers = { 
    task: function(grunt){ 
     //logic... 
    } 
} 

var modify = function(grunt){ 
    modifiers.task(); 
} 

module.exports = { 
    modify: modify 
}; 

そして、ログ呼び出しは空のオブジェクトを出力します。 modifiers.modifyを呼び出すと、エラーを与える:

Warning: modifiers.modify is not a function

は、私は完全に作品をmodule.exportsはどのように欠けているのですか?私は関数をエクスポートするために他のファイルで使用していますが、ここで私的な変数のセマンティクス全体が本当に必要です。

私はまた、他のものと一緒にオブジェクトを返す自己呼び出し関数にmodule.exportsを設定しようとしました。無駄になりました。修飾子オブジェクトを返すだけではどうすればよいですか?私はオブジェクトを返すことを望んでいるので、拡張可能である必要があります。

何か助けが巨大になるでしょう。ありがとう。

答えて

2

JSON.stringify()modifiersオブジェクトには関数の1つのプロパティしかないので、JSON.stringify()は空のオブジェクトを表示します。以下のような

テスト:

console.log(modifiers); 

または

console.log(modifiers.modify); 

は、あなたのモジュールが正常に動作している場合は、期待するものが表示されます。

modifiers.modify()を呼び出すと、./modifiersモジュールをロードする際にエラーが発生し、コンソールに読み込み時に何らかのエラーが表示されるはずです。

+0

ありがとうございました。また、私は呼び出したファイルでエクスポートされたオブジェクトを間違って参照していました。これを投稿すると私はそれを見るのを助けた。 – dudewad

+0

JSON.stringifyについて知りませんでした。私はMDNのドキュメントをチェックして、あなたは完全に正しいです。どうもありがとう!一度それが私にできるようになります(10分のように待たなければならない)... – dudewad

関連する問題