2016-09-19 11 views
0

私は素人nodejs開発者です。私は、javascriptモジュールに深刻な問題があり、他のモジュールの中からモジュールを必要としています。ここで私は助けが必要なシナリオです。他のモジュール内のモジュールが必要エラー

var userFunctions = require('./userFunctions.js')() 

module.exports = function(){ 

module.getUser = function(req.res){ 
    userFunctions.getUser(req.id, function(err,user){ 
     if(err) return res(err) 
     return res(null,user) 
    }) 
} 

return module; 
} 

ので(userFunctions.js)のようなヘルパーモジュール

var paymentFunctions = require('../payment/paymentFunctions.js')() 

module.exports = function(){ 
module.getUser = function(id,res){ 
//logic 
} 
return module; 
} 

別のヘルパーモジュール:

は私が(userApi)のように一つのファイルにAPIの定義を考えてみましょうように(paymentFunctions.js)

var userFunctions = require('../user/userFunctions.js')() 

module.exports = function(){ 
    module.makePayment = function(req,res){ 
    userFunctions.getUser(req.id, function(err){ 
     if(err) return res(err) 
     return res(null) 
    }) 
    } 
return module; 
} 

ご覧のとおり、すべてのヘルパーとAPIはモジュール内部にあります。また、requireステートメントの最後にカッコを入れます。また、paymentFunctionsにはuserFunctionsが必要であり、その逆も可能です。ノードを使っている間、私はこのパターンに伴うさまざまなエラーをまだ把握していません。今日、私は "必要は機能エラーではありません"と思っています。注:Webstormプロジェクトを索引付けすると、うまくいき、突然機能しなくなりました。それは、私は過去にrequire文とJSモジュールで多くの同様のエラーがあると言われています。したがって、私は私の脳で解決する必要があるより体系的な問題です。

答えて

0

まあ、私は、module.exportsの仕組みを理解することが秘密だと思います。まず、 'エクスポート可能な'オブジェクトを作成し、そのプロパティとメソッドを設定する必要があります。

ような何か:この場合

var userFunctions = require('./userFunctions.js'); 
//Lets say this is your userApi class 
module.exports = function() { 
    this.getUser = function (req, res) { 
     userFunctions.getUser(req.id, function (err, user) { 
      if (err) return res(err) 
      return res(null, user) 
     }); 
    } 
}; 

、私はオブジェクト(実際には「Javascriptのクラス」)を作成し、モジュールとしてそれをエクスポート何を。次に、私はそれを必要とすることができ、このプロパティはエクスポート可能なオブジェクト(this.prop = ...)に設定されているので、コードの他の場所のメソッドです。

+0

http://stackoverflow.com/questions/30576454/how-to-make-webstorm-resolve-modules-which-are-functions –

+0

助けてくれてありがとう。 Webstormの問題を引き起こします。私はIDEをあまりにも信頼していました。 –

関連する問題