Estoy tratando de hacer un proyecto NODE JS y aprendiendo los entresijos de la estructura Node JS. He buscado en Internet para descubrir cómo hacer esto con poca o ninguna suerte. El problema es el siguiente:

Tengo una clase llamada player, que se creó en un archivo llamado player.js

var playa = function ()
 {

       this.createPlayer = function(){

       }

 }

En mi archivo index.js enlazo mi reproductor

      var playa = require("./player.js");

Sin embargo, cuando trato de hacer referencia a mi jugadora

  io.on('connection', function(socket){
       var player =   new playa();
        player.createPlayer();
});

La consola me dice que playa no es una función y el servidor se detiene.

  1. ¿Incluso se me permite usar OOP JS tradicional en el nodo? Si muevo esta clase al archivo index.js, funciona espléndidamente, sin embargo, se volverá descuidado ya que la clase es grande y planeo usar al menos 5 clases.

2. Si es posible estructurar mis objetos de esta manera, ¿cómo los vinculo / hago referencia correctamente?

  1. si ninguno de los dos es posible, ¿cuál sería la forma correcta de estructurar mis objetos? Espero no alejarme de mi convención actual, ya que eso es a lo que estoy acostumbrado y necesito crear varias instancias de jugador.
1
Dnaso 3 sep. 2014 a las 17:42

2 respuestas

La mejor respuesta

Si exporta el constructor como una propiedad de module.exports, entonces deberá referirse a él como una propiedad del valor devuelto por require():

var playa = require("./player.js");
var player = new playa.playa();

Si desea que require() devuelva la función en sí, puede escribir

module.exports = function()
{
   this.createPlayer = function(){

   }
}
4
Pointy 3 sep. 2014 a las 13:50

Agregue esto al final de su archivo player.js

module.exports.playa = playa;

Esto permitirá que esa "clase" esté disponible

EDITAR

Deberá crear una instancia como la siguiente:

var p = require('./player.js')
var player = new p.playa();
3
tier1 3 sep. 2014 a las 13:51