Cześć, czy ktoś może mi powiedzieć, dlaczego nie mogę utworzyć instancji następującej klasy / obiektu?
function Arbitrage(odds1, odds2, investment)
{
this.investment = investment;
this.odds1 = odds1;
this.odds2 = odds2;
this.arbPercent = function() {
return 1.0/this.odds1 + 1.0/this.odds2;
};
this.profit = function() {
return this.investment / this.arbPercent() - this.investment;
};
this.individualBets = function() {
return {
odds1bet : this.investment/this.odds1/this.arbPercent(),
odds2bet : this.investment/this.odds2/this.arbPercent()
};
};
};
module.exports = Arbitrage;
Dzwonię do tego:
var utility = require('../businesslogic/utility');
...
router.post('/calculate', function(req, res)
{
var arbit = new utility.Arbitrage(req.body.odds1, req.body.odds2, req.body.investment);
res.json({
arbPercentage : arbit.arbPercent(),
profit : arbit.Profit(),
indvBets : arbit.individualBets()
});
});
Pierwsza linia, var arbit = new utility.Arbitrage(...)
rzuca błąd. Mówi TypeError: undefined is not a function
Sprawdziłem, że utility
nie jest null ani nic takiego. Również wszystkie argumenty konstruktora są w porządku.
Nie znam JavaScript, wszelka pomoc byłaby doceniona. Dzięki.
2 odpowiedzi
Eksportujesz bezpośrednio klasy Arbitrage
, więc po tym, jak to wymaga
var utility = require('../businesslogic/utility');
utility
jest w rzeczywistości klasa {x1}}, co oznacza, że typeof utility === 'function'
.
Widzę dwa sposoby naprawy.
1. zmień sposób, w jaki wymagasz klasy Arbitrage
:
var Arbitrage = require('../businesslogic/utility');
// ...
var arbit = new Arbitrage(...);
2. lub zmień sposób eksportującej:
exports.Arbitrage = Arbitrage;
To ze względu na sposób, w jaki go eksportowałeś
Powinieneś użyć :
module.exports.Arbitrage = Arbitrage;
A potem możesz zaszczepić takie:
var Arbitrage = require('../businesslogic/utility');
var varbitrage = new Arbitrage();