NodeJS Module exports / prototype - n'a pas de méthode
J'ai un module qui ressemble à ceci:
var MyModule = module.exports = function MyModule(opts) {
opts = (opts === Object(opts)) ? opts : {};
if (!(this instanceof MyModule)) {
return new MyModule(opts);
}
for (var key in opts) if ({}.hasOwnProperty.call(opts, key)) {
this.config[key] == opts[key];
}
};
MyModule.prototype.config = {
something:'value'
}
MyModule.prototype.put = function put(info, cb) {
//do stuff
};
Cependant, lorsque je l'utilise comme ceci:
var myModule = require('myModule.js');
myModule.put({test}, function(){
//some callback stuff
});
J'obtiens l'erreur suivante:
TypeError: la fonction de l'Objet MyModule(opts) {
opts = (opts === Object(opts)) ? opts : {}; if (!(this instanceof MyModule)) { return new MyModule(opts); } for (var key in opts) if ({}.hasOwnProperty.call(opts, key)) { this.config[key] == opts[key]; } } has no method 'put'
Il semble que j'ai quelque chose de mal avec mon MyModule.prototype.put
?
source d'informationauteur Alex
Vous devez vous connecter pour publier un commentaire.
Vous avez écrit :
Ici
myModule
est en faitMyModule
une fonction constructeur. Donc, ce que vous faites estMyModule.put()
un appel à une "statique" méthode deMyModule
.MyModule.prototype.put
définit une "instance" de la méthode, de sorte que vous avez à instancier première :Donc, fondamentalement, votre code a juste besoin d'une paire de
()
de travail :Récap :
Avec ce code
var myModule = require('myModule.js');
votremyModule
variable ressemble à une fonction constructeur, pas une instance de myModule.Essayer de l'instanciation de votre premier module: