gpt4 book ai didi

javascript - Node.js 对象不是函数 - module.exports

转载 作者:IT老高 更新时间:2023-10-28 22:13:03 25 4
gpt4 key购买 nike

我有一个为 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);

Error: TypeError: object is not a function at Object.CALL_NON_FUNCTION_AS_CONSTRUCTOR (native)

最佳答案

您正在导出具有 1 个属性 Auction

的对象

当您需要模块时,您导入了一个看起来像

的对象
{
Auction: function(){...}// Auction function
}

所以要么只导出函数:

module.exports = Auction;

或在需要模块时引用该属性:

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

默认情况下,module.exports 是一个空对象:{}

您可以将 exports 替换为函数。这将只导出该函数。

或者您可以通过将它们分配给 exports 来导出许多函数、变量、对象。这就是您在问题中所做的:将 function Auction 分配给 exports 的属性 Auction

关于javascript - Node.js 对象不是函数 - module.exports,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9893592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com