He intentado mirar global
, pero solo contiene variables, no funciones. ¿Cómo puedo enumerar todas las funciones creadas en mi script?¿Cómo puedo hacer una lista de todas las funciones en mi script de nodo js?
Respuesta
CLI: http://nodejs.org/docs/v0.3.7/api/debugger.html
GUI: https://github.com/dannycoates/node-inspector
También hay https://github.com/c4milo/node-webkit-agent en las obras que será una versión más potente del nodo-inspector.
Ejecute la depuración de nodo desde la línea de comandos con el archivo que desea examinar. A continuación, puede utilizar la lista (un número grande aquí)
node debug mini_file_server.js
< debugger listening on port 5858
connecting... ok
debug> scripts
26: mini_file_server.js
debug> list(1000)
1 var http = require('http'),
2 util = require('util'),
3 fs = require('fs');
4
5 server = http.createServer(function(req, res){
6 var stream = fs.createReadStream('one.html'),
7 stream2 = fs.createReadStream('two.html');
8 console.log(stream);
9 console.log(stream2);
10 stream.on('end', function(){
11 stream2.pipe(res, { end:false});
12 });
13
14 stream2.on('end', function(){
15 res.end("Thats all!");
16 });
17
18 res.writeHead(200, {'Content-Type' : 'text/plain'});
19 stream.pipe(res, { end:false});
20 stream2.pipe(res, { end:true});
21
22 }).listen(8001);
23 });
debug>
Si la función tiene un nombre, que va a aparecer en mundial muy bien:
mb-work-laptop:~ markbessey$ node
> for (var k in global) { console.log(k); }
global
process
GLOBAL
root
Buffer
setTimeout
setInterval
clearTimeout
clearInterval
console
module
require
k
> function z(a) { return a*10; }
> for (var k in global) { console.log(k); }
global
process
GLOBAL
root
Buffer
setTimeout
setInterval
clearTimeout
clearInterval
console
module
require
k
z
>
> global.z
[Function: z]
Podría haber jurado que probé esto y descubrí que las funciones no estaban disponibles en global, pero su script también funciona bien para mí. – Trindaz
Lo siento Marcar esto como respuesta: funciona bien en la consola, pero para la secuencia de comandos funciona a() {return 1; } para (var k en global) console.log (k) no muestra la función 'a'. – Trindaz
Derecha.Resulta que, en el modo interactivo, esas definiciones pasan a ser globales, pero si ejecuta un script desde "node script.js", terminan como locals en el módulo. Definitivamente hay una forma de obtener esa información del depurador, pero no estoy seguro si el script puede acceder a ella ... –
Si usted quiere hacer algo de AOP, la ruta es AST.
Puede construir su propio marco AOP con algo como: http://esprima.org.
O usted podría intentar node-burrito, excelente para los aspectos no tan complejas:
var burrito = require('burrito');
var src = burrito('someCall()', function (node) {
if (node.name === 'call') node.wrap('qqq(%s)');
});
generará
qqq(somecall())
Esto es imposible en el nodo sin necesidad de herramientas que reflejan más avanzadas como el depurador .
La única forma de hacerlo sería usar __parent__
que se eliminó debido a problemas de seguridad y otras cosas. Como dijo Mark Bessey, cuando ejecuta el guión, esas variables se convierten en variables de cierre del módulo. No puede acceder a ellos en ningún otro lugar sin exportarlos explícitamente.
Esto no es un error, es por diseño. Es solo cómo funciona el nodo. Sin embargo, si le preguntas a los usuarios a escribir la función de expresión asignaciones, todo funcionaría A-OK:
module.exports = {
a:function(){
//same logic you had in the function declaration
}
}
A continuación, puede reflejar fácilmente en module.exports y enumerar y obtener todos los nombres de las funciones.
- 1. ¿Puedo hacer una macro de clojure que me permita obtener una lista de todas las funciones creadas por la macro?
- 2. ¡La composición de las funciones en una lista de funciones!
- 3. ¿Cómo puedo encontrar todas las unidades en mi aplicación Delphi?
- 4. ¿Cómo enumerar todas las funciones en un módulo de Python?
- 5. ¿Puedo hacer una lista de todas las fuentes de eventos registradas?
- 6. ¿Cómo puedo hacer una lista de todas las cookies para la página actual con Javascript?
- 7. ¿Listar todas las funciones integradas en javascript?
- 8. Obtenga una lista de todas las funciones y procedimientos en una base de datos Oracle
- 9. Cómo organizar las funciones de JS en varios archivos
- 10. ¿Puedo rastrear todas las funciones/métodos que se ejecutan en un script python?
- 11. ¿Cómo obtengo una lista de todas las ventanas en mi escritorio gnome2 usando pygtk?
- 12. archivo js del nodo desencadenador
- 13. ¿Cómo puedo obtener una lista de todas las implementaciones de una interfaz mediante programación en Java?
- 14. Haciendo todas las combinaciones posibles de una lista en python
- 15. ¿Cómo escribir una enumeración de todas las funciones computables?
- 16. ¿Cómo obtener una lista de todas las formas abiertas de mi software?
- 17. En Perl, ¿cómo puedo generar todas las combinaciones posibles de una lista?
- 18. ¿Cómo puedo encontrar todas las combinaciones posibles de una lista de listas (en Python)?
- 19. eliminar todas las variables, excepto las funciones
- 20. Script de Python para imprimir todas las definiciones de funciones de un archivo C/C++
- 21. ¿Cómo puedo editar un puntero a un nodo de lista desde una función en una recursión?
- 22. ¿Cómo obtener una lista de todas las NSWindow abiertas desde todas las aplicaciones en ejecución?
- 23. Windows: ¿cómo obtener una lista de todas las ventanas visibles?
- 24. ¿Cómo hacer una simple lectura de datos POST en el Nodo JS?
- 25. Cómo encontrar una lista de todas las DLL no administradas loadad mediante mi aplicación .net administrada
- 26. JS/restaurar las funciones globales por defecto
- 27. Cómo puedo establecer puntos de interrupción en un script JS externo en Firebug
- 28. ¿Cómo puedo eliminar todas las instancias de un elemento de una lista en Python?
- 29. ¿Cómo puedo obtener una lista de todas las canalizaciones con nombre abierto en Windows?
- 30. Obtener una lista de todas las sesiones activas en ASP.NET
¿cuál sería el caso de uso para esto? – mihai
Un script AOP personalizado que estoy creando para una aplicación de nodo. Quiero usarlo para cosas como perfilado, regulación y políticas de seguridad personalizadas. Revisé Dojo pero tuve algunos problemas iniciales solo cargándolos en la aplicación de mi nodo, así que pensé en escribir un script personalizado. No debería ser tan difícil. – Trindaz
¿Desea hacer esto desde el script? No estoy seguro de que sea tan fácil porque puede tener funciones anónimas, funciones dentro de cierres, funciones creadas dinámicamente, etc. – mihai