2012-03-06 26 views
6

Im đánh giá khung Geddy MVC cho node.js và tôi thấy một vấn đề lạ - không có điểm ngắt nào của tôi bị trúng khi gỡ lỗi.Không có điểm ngắt nào được nhấn với Geddy

Tôi đang sử dụng WebStorm để khởi chạy node.js ở chế độ gỡ lỗi.

Tôi không biết làm thế nào để làm cho Geddy bắt đầu trong chế độ gỡ lỗi bằng cách sử dụng lệnh CLI vì vậy tôi có một tập tin bootstrapper mà tôi sử dụng trông như thế này:

console.log("Starting server...") 
var geddy = require("geddy/bin/cli") 
console.log("Server started.") 

tôi đặt một breakpoint trên cả ba dòng và chỉ cuối cùng console.log bị trúng, vì vậy ít nhất tôi biết rằng các điểm ngắt và gỡ lỗi đang hoạt động đúng cách.

Bộ điều khiển của Geddy nội bộ require() cũng có các điểm ngắt được đặt ở một số vị trí. Chúng không bao giờ bị tấn công, nhưng các bộ điều khiển hoạt động đúng và các yêu cầu HTTP cũng được phục vụ đúng cách.

Có lý do nào khiến các điểm ngắt sẽ không bị tấn công trong Geddy không? Tôi còn có thể làm gì nữa không?

+0

Có thể thử thêm 'trình gỡ lỗi;' vào nguồn của bạn, thay cho 'console.log'. (hoặc ngay trước đó) Điều đó có thay đổi gì cho bạn không? –

+0

Không. Tôi nghĩ rằng vấn đề có thể liên quan đến thực tế là Geddy sử dụng 'cluster' nội bộ để sinh ra các tiến trình mới, mà trình gỡ lỗi không được kết nối tới. Tôi đang cố xác nhận điều này. –

+0

Tôi đang gặp phải ... bất kỳ cập nhật nào một cách tình cờ? – ewindsor

Trả lời

1

Tôi đã không thể xác minh điều này, nhưng tôi tin rằng vấn đề là do thực tế là cluster tạo ra các quy trình mới nhưng trình gỡ lỗi không biết về chúng. Tôi đã không tìm thấy một cách để đính kèm trình gỡ lỗi vào các quy trình mới và thậm chí không chắc chắn liệu chúng có thể được bắt đầu với cổng gỡ lỗi đang mở hay không.

Geddy sử dụng cluster để kế thừa sự cố này.

Chủ đề này đề cập đến một giải pháp có thể: (How do I enable --debug for node.js when running GeddyJS) nhưng điều này không giúp tôi.

1

Geddy hiện không hỗ trợ gỡ lỗi, nhưng chúng tôi muốn thêm tính năng đó làm tính năng.

+0

Câu trả lời này hiện đã lỗi thời, hãy xem câu trả lời của @ miguel ở trên. – Techwraith

1

Để trả lời câu hỏi đặc biệt cho Jetbrains WebStorm hoặc IntelliJ (với plugin Node.js) gỡ lỗi:

Nói tóm lại, thiết lập ứng dụng của bạn như thể bạn đang đi để triển khai trên Heroku hoặc Nodejitsu.

package.json

{ 
    "name": "geddy_todo", 
    "version": "0.0.1", 
    "dependencies": { 
    "geddy": "0.6.x" 
    }, 
    "engines": { 
    "node": "0.8.x", 
    "npm": "1.1.x" 
    } 
} 

Tiếp theo, bạn có hai lựa chọn

Lựa chọn 1. Tạo một app.js chạy geddy.

app.js

var geddy = require('geddy'); 

geddy.start({ 
    environment: process.env.GEDDY_ENVIRONMENT || 'production' 
}); 

Trong WebStorm/IntelliJ, trong Run/Debug Cấu hình của bạn cho các ứng dụng Node.js hãy chắc chắn để thêm một biến môi trường GEDDY_ENVIRONMENT và đặt nó là 'phát triển' hoặc 'kiểm tra' nếu bạn muốn chạy thử nghiệm của mình.

Lựa chọn 2 Gọi client geddy trực tiếp

@MiguelMadero nêu ý tưởng này trong các ý kiến. Đặt bạn WS/IJ để chạy sau

path/to/geddy/bin/cli.js 
+0

Không cần phải làm điều này, đơn giản thay vì chạy geddy để bắt đầu bạn chạy đường dẫn node/to/geddy/bin/cli.js và thiết lập các cờ gỡ lỗi thông thường. –

+0

Nhưng nó hoạt động như vậy tại sao có folks xuống bình chọn nó? –

+1

Tôi đã không bỏ phiếu. Tôi nghĩ rằng đó là một câu trả lời tốt tho. –

Các vấn đề liên quan