私のモデル(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。
エクスポートしたものだけが外部に表示されます。あなたのファイル全体を投稿すると解決策が得られます。 – libik
エクスポートされた新しいプロパティを追加するには 'exports.getAllCompaniesWithReviews = ...'を実行してください。エクスポートされたオブジェクト全体を置き換えるときにのみ、 'module.exports'を使用してください。 –
@MattHarrison 'exports'は' module.exports'のエイリアスに過ぎず、違いはありません。とにかくおかげで。 – Jem