Tôi đã thử xem global
, nhưng nó chỉ chứa biến, chứ không phải chức năng. Làm thế nào tôi có thể liệt kê tất cả các chức năng được tạo trong tập lệnh của tôi?Tôi có thể liệt kê tất cả các chức năng trong tập lệnh js nút của mình như thế nào?
Trả lời
cli: http://nodejs.org/docs/v0.3.7/api/debugger.html
gui: https://github.com/dannycoates/node-inspector
Ngoài ra còn có https://github.com/c4milo/node-webkit-agent trong các tác phẩm đó sẽ là một phiên bản mạnh mẽ hơn của nút-thanh tra.
Chạy gỡ lỗi nút từ dòng lệnh với tệp bạn muốn xem. Sau đó, bạn có thể sử dụng danh sách (một số số lớn ở đây)
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>
Nếu chức năng có một cái tên, nó sẽ hiển thị trong toàn cầu tốt:
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]
Tôi có thể thề rằng tôi đã thử nghiệm cho điều này và thấy rằng các chức năng không có sẵn trên toàn cầu, nhưng kịch bản của bạn cũng làm việc tốt cho tôi. – Trindaz
Xin lỗi Mark Tôi đã đánh dấu điều này là câu trả lời - nó hoạt động tốt trong giao diện điều khiển, nhưng đối với tập lệnh chức năng a() {return 1; } cho (var k trong toàn cục) console.log (k) nó không hiển thị hàm 'a'. – Trindaz
Phải.Khi nó quay ra, trong chế độ tương tác, các định nghĩa đó đi vào toàn cầu, nhưng nếu bạn chạy một tập lệnh từ "nút script.js", chúng sẽ kết thúc với tư cách là người dân địa phương trong mô-đun. Chắc chắn có một cách để lấy thông tin đó từ trình gỡ lỗi, nhưng không chắc liệu tập lệnh có thể truy cập vào nó hay không ... –
Nếu bạn muốn làm một số AOP, tuyến đường là AST.
Bạn có thể xây dựng khung AOP của riêng mình với một cái gì đó như: http://esprima.org.
Hoặc bạn có thể thử node-burrito, tuyệt vời cho các khía cạnh không quá phức tạp:
var burrito = require('burrito');
var src = burrito('someCall()', function (node) {
if (node.name === 'call') node.wrap('qqq(%s)');
});
sẽ tạo
qqq(somecall())
này là không thể trong nút mà không cần công cụ phản ánh cao cấp hơn như debugger.
Cách duy nhất để thực hiện việc này là sử dụng __parent__
đã bị xóa do sự cố bảo mật và các vấn đề khác. Giống như Mark Bessey cho biết, khi bạn chạy tập lệnh, các biến đó sẽ trở thành biến đóng của mô-đun. Bạn không thể truy cập chúng ở nơi khác mà không xuất khẩu chúng một cách rõ ràng.
Đây không phải là lỗi, theo thiết kế. Nó chỉ là cách nút hoạt động. Tuy nhiên, nếu bạn chỉ cần yêu cầu người dùng của bạn để viết bài tập biểu hiện chức năng, tất cả sẽ làm việc một-ok:
module.exports = {
a:function(){
//same logic you had in the function declaration
}
}
Sau đó, bạn có thể dễ dàng suy nghĩ về và liệt kê module.exports và nhận được tất cả các tên hàm.
- 1. Làm thế nào để viết một liệt kê của tất cả các chức năng tính toán?
- 2. git liệt kê tất cả các lệnh có sẵn
- 3. công cụ linux để liệt kê tất cả các chức năng trong tệp nguồn?
- 4. Chức năng của PHP để liệt kê tất cả các thuộc tính của đối tượng
- 5. Liệt kê tất cả các hàm dựng sẵn trong javascript?
- 6. PHP cách liệt kê tất cả các chức năng công khai của lớp
- 7. Liệt kê tất cả virtualenv
- 8. Tập lệnh liệt kê tất cả các ký tự riêng biệt trong một tệp văn bản
- 9. Psql liệt kê tất cả các bảng
- 10. Liệt kê tất cả các kho SVN
- 11. Liệt kê tất cả các hội đồng .NET có sẵn
- 12. Làm thế nào tôi có thể liệt kê tất cả các thuộc tính của đối tượng Math?
- 13. Liệt kê tất cả các chỉ mục
- 14. Liệt kê tất cả các gói con của gói
- 15. liệt kê tất cả các quy trình trong iOS 5.0.1
- 16. Tôi muốn liệt kê tất cả các quốc gia trong danh sách thả xuống của mình, nơi tôi có thể nhận được dịch vụ web đó?
- 17. làm thế nào tôi có thể liệt kê ra tất cả các không gian tên trong XML?
- 18. Tôi có thể liệt kê các thuật toán mã hóa có sẵn như thế nào?
- 19. Làm thế nào để liệt kê tất cả các mục của tệp tar trong java?
- 20. Liệt kê tất cả các bảng trong postgresql information_schema
- 21. Cách liệt kê tất cả các thuộc tính của lớp
- 22. Liệt kê tất cả các xử lý tệp đang mở?
- 23. Liệt kê tất cả người dùng trong LDAP bằng PHP
- 24. Liệt kê tất cả các ổ đĩa vật lý (Windows)
- 25. Làm cách nào để liệt kê tất cả các đăng ký của tôi bằng ClearCase?
- 26. Liệt kê tất cả các tệp trong gói homebrew
- 27. Android liệt kê tất cả hình ảnh có sẵn
- 28. Liệt kê tất cả các hành động có thể có trên bảng 4x4 trong Prolog
- 29. Liệt kê tất cả hình ảnh của Google Map Marker
- 30. Liệt kê tất cả các nút con của nút cha trong điều khiển số lần xem trong Visual C#
trường hợp sử dụng cho trường hợp này là gì? – mihai
Tập lệnh AOP tùy chỉnh mà tôi đang tạo cho một ứng dụng nút. Tôi muốn sử dụng nó cho những thứ như lược tả, điều chỉnh và các chính sách bảo mật tùy chỉnh. Tôi đã kiểm tra Dojo nhưng có một số probs sớm chỉ tải nó vào ứng dụng nút của tôi vì vậy tôi nghĩ rằng tôi muốn viết một kịch bản tùy chỉnh. Nó không phải là khó khăn. – Trindaz
Vì vậy, bạn muốn thực hiện điều này từ bên trong tập lệnh? Tôi không chắc nó dễ dàng như vậy bởi vì bạn có thể có các chức năng ẩn danh, chức năng bên trong bao đóng, chức năng được tạo động… – mihai