Node.jsアプリ用に作成したモジュールがあります。アプリはsocket.ioも使用しており、作成時にsocket.ioオブジェクトをオークションオブジェクトに渡したいと考えています。
これは、Nodeの外部で実行すると機能しますが、内部では「オブジェクトは関数ではありません」というエラーが表示されます-私の推測では、module.exportsと関係があるはずですが、どうなるかは確実です。
どんな提案も素晴らしいです-ありがとう!
auction.js
var Auction = function(socket) {
this.data = [];
this.timer = null;
this.socket = socket;
}
Auction.prototype = {
add: function(auction) {
this.data.Push(auction);
}
}
module.exports.Auction = Auction;
server.js:
var Auction = require('./lib/auction');
var auctions = new Auction(socket);
エラー:TypeError:オブジェクトはObject.CALL_NON_FUNCTION_AS_CONSTRUCTOR(ネイティブ)の関数ではありません
1つのプロパティAuction
のオブジェクトをエクスポートしています
モジュールが必要なときに、次のようなオブジェクトをインポートしました
{
Auction: function(){...}// Auction function
}
そのため、関数のみをエクスポートします。
module.exports = Auction;
または、モジュールが必要なときにプロパティを参照します。
var Auction = require('./lib/auction').Auction;
デフォルトでは、module.exportsは空のオブジェクトです:{}
exports
を関数に置き換えることができます。これにより、その関数のみがエクスポートされます。
または、exports
に割り当てることで、多くの関数、変数、オブジェクトをエクスポートできます。これはあなたの質問でしたことです:function Auction
をAuction
のプロパティexports
に追加します。