2016-05-19 20 views
2

私のモデル(review)の1つで関数を宣言し、それを標準ノードの方法でエクスポートして他のファイルで使用できるようにしました。私は別のモデル(company)を参照し、そこにもエクスポートします。ノード内のmodule.exportsの連鎖から関数を呼び出す方法

最後に、別のファイル(companiesRoute)にcompanyで定義されている関数を使用しようとしていますが、company.getAllCompaniesWithReviews is not a functionというエラーが発生しています。

私も可能なことをしようとしていますか?

// review.js 
module.exports.getAllCompaniesWithReviews = function(next) { 
    // ... 
    // ... 
    // ... 
}; 

// company.js 
var reviews = require('./review'); 
module.exports.getAllCompaniesWithReviews = reviews.getAllCompaniesWithReviews; 

// companiesRoute.js 
var company = require('../models/company'); 
company.getAllCompaniesWithReviews(function(err, result) { 
    // ... 
    // ... 
    // ... 
}); 

私がしようとするとcompaniesRouteから直接関数を呼び出した場合、それは動作します:

review.getAllCompaniesWithReviews(function(err, result) { 
    // ... 
    // ... 
    // ... 
}); 

これは、もちろん、答えです。しかし、私のバージョンはなぜ機能しないのですか?

また、ノードv4.4.4。

+1

エクスポートしたものだけが外部に表示されます。あなたのファイル全体を投稿すると解決策が得られます。 – libik

+0

エクスポートされた新しいプロパティを追加するには 'exports.getAllCompaniesWithReviews = ...'を実行してください。エクスポートされたオブジェクト全体を置き換えるときにのみ、 'module.exports'を使用してください。 –

+0

@MattHarrison 'exports'は' module.exports'のエイリアスに過ぎず、違いはありません。とにかくおかげで。 – Jem

答えて

1

company.jsでこれを試してください。

module.exports.getAllCompaniesWithReviews = function(next) { 
    reviews.getAllCompaniesWithReviews(next); 
} 
+0

いいです。それは完璧に働いた。どのノードのバージョンでこれを試しましたか?彼らはv5とv6でうまく動作するので、v5で何かを変更する必要があります。 – Jem

+0

私のバージョンはv4.4.2です。私もそれをアップグレードする必要があります。私に知らせてくれてありがとう。 – erolkaya84

関連する問題