2013-09-11 3 views
1

Я пытаюсь создать сервер кластера с socket.io и express.js Я следую различным учебникам в Интернете, а также на youtube. То, что я на данный момент этот код в моем app.js:node.js express jde jad шаблоны не отображаются

var cluster = require('cluster'); 

if (cluster.isMaster) { 

    var cpuCount = require('os').cpus().length; 
    var workers = []; 

    for (var i = 0; i < cpuCount; i++) { 
     workers[i] = cluster.fork(); 
    } 

    cluster.on('exit', function (worker){ 

     for (var i = 0; i < workers.length; i++) { 
      if (worker.process.pid === workers[i].process.pid) { 
       workers.splice(i, 1); 
      } 
     } 

     for (var i = 0; i < cpuCount - workers.length; i++) { 
      workers.push(cluster.fork()); 
     } 

    }); 

} else { 

    /** 
    * Module dependencies. 
    */ 

    var express = require('express'); 
    var routes = require('./routes'); 
    var http = require('http'); 
    var path = require('path'); 

    var app = express(); 

    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'))); 



    // development only 
    if ('development' == app.get('env')) { 
     app.use(express.errorHandler()); 
    } 

    app.get('/', routes.index); 

    var server = http.createServer(app); 
    var io = require('socket.io').listen(app.get('port')); 

} 

Когда я иду в http://localhost:3000/ я получаю ответ:

Добро пожаловать в Socket.io.

В моих предыдущих тестовых сценариях у меня не было этой проблемы, и мои нефритовые шаблоны были отлично отображены. Может ли кто-нибудь объяснить, почему это происходит?

Кроме того, в моем каталоге маршрутов у меня есть сценарий: index.js с этим кодом:

/* 
* GET home page. 
*/ 

exports.index = function(req, res){ 
    res.render('index', { title: 'Express' }); 
}; 

Наконец, в моих взглядах папку я layout.jade с:

doctype 5 
html 
    head 
    title= title 
    link(rel='stylesheet', href='/stylesheets/style.css') 
    body 
    block content 

и индекс. нефрит:

extends layout 

block content 
    h1= title 
    p Welcome to #{title} 

ответ

1

Похоже, что проблема была в последних строках app.js

это устраняет проблему:

var server = http.createServer(app); 
var io = require('socket.io').listen(server); 
server.listen(app.get('port')); 

Извините за неудобства.

Смежные вопросы