2012-09-18 33 views
5

Tôi chắc rằng câu hỏi này đã được hỏi hàng triệu lần nhưng tôi chưa tìm thấy giải pháp nào cho vấn đề sau.iisnode và express

Tôi có một ứng dụng cơ bản đang chạy bằng cách sử dụng nút và biểu thức. Khi tôi chạy ứng dụng trong nút, theo mặc định, nó sẽ gửi tôi đến index.html trong thư mục chung của tôi. Ngay cả khi tôi không có bất kỳ tuyến đường nào được thiết lập. Tôi muốn điều này xảy ra.

Tôi đã cài đặt iisnode và tạo một ứng dụng mới trong 'Trang web mặc định' được gọi là 'Thiết bị'. Tôi đặt đơn của tôi ở đó không thay đổi. Đọc xung quanh tôi cần phải sắp xếp một số công cụ ra với web.config và quyết định đi với cấu hình đề cập ở đây (không phải là yaml):

http://tomasz.janczuk.org/2012/05/yaml-configuration-support-in-iisnode.html

Khi tôi cố gắng và tải các ứng dụng trong trình duyệt của tôi nó luôn cố gắng tìm ra tuyến đường trong app.js của tôi và ném điệp lại tôi như:

không thể GET/thiết bị/

tôi thực sự kéo tóc của tôi ra với lỗi này và không biết những gì làm! Tôi có phải thiết lập tuyến đường mặc định cho nội dung tĩnh bên trong điểm nhập app.js của tôi không? Tôi đã sau tại chỗ:

app.configure(function(){ 
    app.set('port', process.env.PORT || 3000); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(path.join(__dirname, 'public'))); 
}); 

Nhưng nó vẫn không đưa cho tôi qua index.html khi tôi tải các ứng dụng từ đó là root:

'http: // localhost/thiết bị /'

Bất kỳ ai cũng có thể giúp tôi với điều này?

+0

Tôi đã trả lời câu hỏi này trên một chuỗi khác. xem câu trả lời của tôi trên [ở đây] (http://stackoverflow.com/a/31482232/2980607) – peteb

Trả lời

5

Cách dễ nhất để giải quyết vấn đề này là tạo một trang web IIS chuyên dụng cho ứng dụng của bạn trái ngược với việc tạo một ứng dụng IIS trong một trang web IIS như bạn đã làm.

Nếu bạn có một trang web dành riêng cho ứng dụng node.js của bạn trong IIS, ứng dụng có thể truy cập tại thư mục gốc của không gian URL, ví dụ: http://myapp.com/, là cấu hình tuyến đường tốc độ mặc định mong đợi. Ngược lại, nếu bạn tạo một ứng dụng IIS trong một trang web IIS để lưu trữ ứng dụng node.js của bạn (giả sử devices), nó có thể truy cập tại cấp dưới URL đến URL gốc của trang web, ví dụ: http://myapp.com/devices/. Đoạn đường dẫn URL bổ sung (devices) là ứng dụng mà ứng dụng tốc hành của bạn không mong đợi và không được định cấu hình để xử lý và do đó nó từ chối yêu cầu.

Nếu bạn nhấn mạnh vào việc lưu trữ ứng dụng node.js như một ứng dụng IIS trong IIS, bạn sẽ cần tăng thêm cấu hình tuyến đường nhanh để mong đợi phân đoạn đường dẫn URL bổ sung khớp với tên ứng dụng IIS.

+0

Tôi sẽ không downvote vì bạn ít nhất là mô tả vấn đề, nhưng tôi sẽ không upvote vì tất cả những điều đó, bạn vẫn không 't cung cấp một giải pháp. Cuối cùng, những thay đổi cần thiết (xem câu trả lời của tôi dưới đây) phục vụ để làm cho ứng dụng mạnh mẽ hơn trong bất kỳ môi trường nào VÀ khắc phục vấn đề được áp đặt bởi các thư mục ảo trong IIS. – rainabba

+0

Tôi upvoted bạn vì cô lập các ứng dụng nút để trang web chuyên dụng riêng của nó nó làm cho ít nhầm lẫn như những gì gốc của không gian url là – Alexander

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