Me gustaría comprobar si mi módulo se está incluyendo o ejecutando directamente. ¿Cómo puedo hacer esto en node.js?node.js equivalente de python si __name__ == '__main__'
Respuesta
The docs describen otra manera de hacer esto que puede ser el método preferido:
Cuando un archivo se ejecuta directamente desde el Nodo, require.main se establece en su módulo .
Para aprovechar esto, comprobar si este módulo es el módulo principal y, si es así, llame a su código principal:
var fnName = function(){
// main code
}
if (require.main === module) {
fnName();
}
EDIT: Si utiliza este código en un navegador, obtener un "Error de referencia" ya que "requerir" no está definido. Para evitar esto, use:
if (typeof require != 'undefined' && require.main==module) {
fnName();
}
if (!module.parent) {
// this is the main module
} else {
// we were require()d from somewhere else
}
EDIT: Si utiliza este código en un navegador, obtendrá un "error de referencia", ya que "módulo" no está definido. Para evitar esto, utilice:
if (typeof module != 'undefined' && !module.parent) {
// this is the main module
} else {
// we were require()d from somewhere else or from a browser
}
¿Está documentado esto en alguna parte? – intuited
No, pero se usa en una de las pruebas de [node.js] (https://github.com/joyent/node/blob/master/test/simple/test-cli-eval.js) – nornagon
Para mí esto se lee mejor que la respuesta aceptada y tiene el beneficio de no requerir el "nombre" del módulo – blented
- 1. Powershell equivilent de Python si __name__ == '__main__':
- 2. PHP equivalente de Python's __name__ == "__main__"?
- 3. ¿Por qué hace esto? si - __name__ == '__main__'
- 4. Usar si __name__ == '__main__': para pruebas
- 5. Rubí equivalente a Python __main__
- 6. ¿Hay un equivalente R de la pitonica "si __name__ ==" __main__ ": main()"?
- 7. El alcance de if __name__ == __main__
- 8. ¿Cómo configuro __name__ a '__main__' cuando uso IronPython alojado?
- 9. `if __name__ == '__main __'` equivalente en Ruby
- 10. __main__ y de alcance en Python
- 11. Obtener __name__ de llamar módulo de función en Python
- 12. ¿Cómo obtener el nombre de archivo del módulo __main__ en Python?
- 13. ¿Hay dojo.hitch equivalente en node.js
- 14. ¿Cuáles son los diferentes valores posibles para __name__ en un script de Python, y qué significan?
- 15. Python: determine el módulo actual actual (no __main__)
- 16. ¿Cómo importar un módulo como __main__?
- 17. ¿Las herramientas de configuración de python admiten el estilo de ejecución `__name__ ==" __main __ "`?
- 18. ¿Puedo cambiar el atributo __name__ del objeto en python?
- 19. ¿Hay un sprintf equivalente para node.js
- 20. Python-equivalente de formato corto "si" en C++
- 21. Node.js vs Python
- 22. ¿Puedo saber, en node.js, si mi script se está ejecutando directamente o está siendo cargado por otro script?
- 23. Equivalente a __func__ (de C) en Python
- 24. ¿Por qué cambia el valor de __name__ después de la asignación a sys.modules [__ name__]?
- 25. Python equivalente de Sinatra
- 26. enumeración de Python equivalente
- 27. Python Equivalente a phpinfo()
- 28. Python equivalente a find2perl
- 29. ¿Por qué la función main() no está definida dentro de if '__main__'?
- 30. ¿Hay un equivalente de Node.js para desarrolladores de .NET?
siempre debe verificar require.main === módulo ** independientemente ** del nombre de su función. para que quede claro por encima de código debe ser modificado como: 'fnName = función var() { // código } si (require.main === módulo) { fnName(); } ' –
Lo envolvería con try ... catch para compatibilidad con el navegador –
@OhadCohen" try ... catch "también podría detectar errores reales. Creo que es mejor simplemente comprobar si typeof require! = 'Undefined'. –