2012-05-18 9 views
8

Tengo dos funciones en el mismo archivo, ambas accedidas externamente. Una de las funciones es llamada por la segunda.¿Es posible acceder a otras funciones de exportación de módulos dentro del mismo archivo?

module.exports.functionOne = function(param) { 
    console.log('hello'+param); 
}; 

module.exports.functionTwo = function() { 
    var name = 'Foo'; 
    functionOne(name); 
}; 

Cuando esto se ejecuta, la llamada a functionOne se marca como no definida.

¿Cuál es la forma correcta de consultarlo?

Un patrón que he encontrado que funciona es haciendo referencia al archivo en sí.

var me = require('./thisfile.js'); 
me.functionOne(name); 

... pero parece que tiene que haber una manera mejor.

Respuesta

16

Simplemente module.exports.functionOne().

Si eso es demasiado engorroso, simplemente hacer lo siguiente:

function fnOne() { 
    console.log("One!"); 
} 

module.exports.fnOne = fnOne; 
0

Creo que he estado pensando en que necesita es un equivalente de incluir, importación, etc. Si hay otra manera alrededor de ella, podría se interesante para verlo. Todavía estoy mojado detrás de las orejas con el nodo.

James HerdmansUnderstanding Node.js "require" publicación realmente me ayudó cuando se trataba de ayudar con la organización de código. ¡Definitivamente vale la pena mirar!

// ./models/customer.js 
Customer = function(name) { 
    var self = this; 
    self.name = name; 

}; 

// ./controllers/customercontroller.js 
require("../models/customer"); 

CustomerController = function() { 
    var self = this; 

    var _customers = [ 
    new Customer("Sid"), 
    new Customer("Nancy") 
    ]; 
    self.get() { 
    return _customers; 
    } 
}; 
3
var me = require(module.filename); 
me.functionOne(name); 

o simplemente usan las exportaciones propio objeto

module.exports.functionOne(name); 
Cuestiones relacionadas