web-dev-qa-db-ja.com

Node.jsオブジェクトは関数ではありません-module.exports

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(ネイティブ)の関数ではありません

18
dzm

1つのプロパティAuctionのオブジェクトをエクスポートしています

モジュールが必要なときに、次のようなオブジェクトをインポートしました

{
  Auction: function(){...}// Auction function
}

そのため、関数のみをエクスポートします。

module.exports = Auction;

または、モジュールが必要なときにプロパティを参照します。

var  Auction = require('./lib/auction').Auction;

デフォルトでは、module.exportsは空のオブジェクトです:{}

exportsを関数に置き換えることができます。これにより、その関数のみがエクスポートされます。

または、exportsに割り当てることで、多くの関数、変数、オブジェクトをエクスポートできます。これはあなたの質問でしたことです:function AuctionAuctionのプロパティexportsに追加します。

37
The Who