Próbowałem, patrząc na global
, ale zawiera tylko zmienne, a nie funkcje. Jak mogę wyświetlić wszystkie funkcje utworzone w moim skrypcie?Jak mogę wyświetlić wszystkie funkcje w skrypcie js mojego węzła?
Odpowiedz
cli: http://nodejs.org/docs/v0.3.7/api/debugger.html
gui: https://github.com/dannycoates/node-inspector
Jest też https://github.com/c4milo/node-webkit-agent w pracach, które będzie mocniejsza wersja węzła inspektor.
Uruchom węzeł debugowania z wiersza poleceń z plikiem, który chcesz obejrzeć. Następnie można użyć listy (niektóre dużą liczbę tutaj)
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>
Jeśli funkcja ma swoją nazwę, będzie to widoczne w globalnym porządku:
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]
Mogłem przysiąc, że sprawdziłem to i okazało się, że funkcje nie są dostępne w wersji globalnej, ale twój skrypt działa również dla mnie. – Trindaz
Niestety, zaznaczyłem to jako odpowiedź - działa dobrze na konsoli, ale dla skryptu funkcja a() {return 1; } dla (var k w globalnym) console.log (k) nie wyświetla funkcji "a". – Trindaz
Dobrze. –
Jeśli chcesz zrobić kilka AOP, trasa to AST.
Można zbudować własne ramy AOP z czymś takim jak: http://esprima.org.
Albo można spróbować node-burrito, doskonałe dla niezbyt skomplikowanych aspektach:
var burrito = require('burrito');
var src = burrito('someCall()', function (node) {
if (node.name === 'call') node.wrap('qqq(%s)');
});
wygeneruje
qqq(somecall())
jest to niemożliwe bez węzła w bardziej zaawansowanych narzędzi, takich jak odbijających debugger.
Jedynym sposobem na to jest użycie __parent__
, który został usunięty z powodu problemów z bezpieczeństwem i innych rzeczy. Jak powiedział Mark Bessey, po uruchomieniu skryptu zmienne te stają się zmiennymi zamykającymi moduł. Nie można uzyskać do nich dostępu w innym miejscu bez wyraźnego ich eksportu.
To nie jest błąd, jest zgodny z projektem. Tak działa węzeł. Jednakże, jeśli po prostu zapytać użytkownikom do pisania funkcji przypisania ekspresji, wszystko będzie działać a-ok:
module.exports = {
a:function(){
//same logic you had in the function declaration
}
}
Następnie można łatwo refleksji i wyliczyć module.exports i uzyskać wszystkie nazwy funkcji.
- 1. PHP, jak wyświetlić wszystkie publiczne funkcje klasy
- 2. mogę określić ES6 wewnątrz węzła pliku js
- 3. Jak mogę wyświetlić wszystkie właściwości obiektu Math?
- 4. Plik węzła wywołującego js
- 5. Jak wyświetlić znak tux w skrypcie powłoki?
- 6. Jak organizować funkcje JS w wielu plikach
- 7. Jak mogę wyświetlić funkcje C na niestandardowej maszynie wirtualnej?
- 8. Jak odzyskać wszystkie narzędzia używane w skrypcie powłoki
- 9. Używanie węzła JS dla Frontendu
- 10. Jak wywołać wszystkie funkcje PHP w tablicy
- 11. Jak mogę sprawdzić, czy wszystkie moje funkcje init zostały wywołane?
- 12. Jak wyświetlić wszystkie ostrzeżenia w SBT 0.11?
- 13. Jak wyświetlić funkcję wskaźnika postępu w skrypcie powłoki?
- 14. Jak wyświetlić wszystkie etykiety boxplot?
- 15. Jak mogę zaimportować zewnętrzny .js do mojego testu Java z Selenium w Eclipse?
- 16. JS: Funkcje argumenty domyślne wartości
- 17. Jak wyświetlić wszystkie właściwości klas?
- 18. Nie mogę wyświetlić 2 wystąpienia mojego niestandardowego SurfaceView
- 19. Jak wyświetlić wszystkie ciągi tekstowe do zapytania w Railsach?
- 20. Czy mogę wyświetlić wszystkie pliki zasobów ciągów w drzewie folderów?
- 21. Jak wyświetlić wszystkie zakładki w NERDTree VIM?
- 22. Jak wyświetlić wszystkie nazwy kolumn w Netezza?
- 23. Usunąć wszystkie pliki, ale zachować wszystkie katalogi w skrypcie bash?
- 24. wywoławczy js zdefiniowane w skrypcie babel z HTML
- 25. Czy mogę wyświetlić wszystkie pliki cookie ustawione w PHP?
- 26. Zaktualizuj pakiety js węzła na heroku
- 27. Anuluj wszystkie zmienne w skrypcie PHP
- 28. Jak mogę wyświetlić NSError?
- 29. Wykonywanie klas Javy za pomocą węzła JS (Meteor JS)
- 30. Wybierz wszystkie elementy podrzędne węzła w scala
jaki byłby tego przykład? – mihai
Niestandardowy skrypt AOP, który tworzę dla aplikacji węzła. Chcę go używać do takich funkcji, jak profilowanie, ograniczanie i niestandardowe zasady zabezpieczeń. Sprawdziłem Dojo, ale miałem kilka wczesnych problemów po prostu załadowanie go do mojej aplikacji węzła, więc pomyślałem, że napiszę własny skrypt. To nie powinno być takie trudne. – Trindaz
Więc chcesz to zrobić z poziomu samego skryptu? Nie jestem pewien, czy to jest takie proste, ponieważ możesz mieć anonimowe funkcje, funkcje wewnątrz zamknięć, funkcje tworzone dynamicznie itd. – mihai