【问题标题】:how to Combine two applications in one file in nodejs如何在nodejs中将两个应用程序合并到一个文件中
【发布时间】:2014-07-03 02:22:18
【问题描述】:

这是我的聊天应用程序文件代码

var worker=function(worker) {
var http=require('http');
var fs=require('fs');
var app=http.createServer(function(request,response){

fs.readFile("index.html",'utf-8',function(err,data){
response.writeHead(200, {'Content-Type': 'text/html'});
    response.write(data);
    response.end();


});
}).listen(8080);


var io = require('socket.io').listen(app);

io.sockets.on('connection', function(socket) {
socket.on('message_to_server', function(data) {
    io.sockets.emit("message_to_client",{ message: data["message"] });
  });
});
};
 module.exports=worker;

这是我的 server.js 文件

  var express  = require('express');
  var io = require('socket.io');
   var worker = require("./chat/main.js");
    var app      = express();
  var port     = process.env.PORT || 8080;
 var mongoose = require('mongoose');
 var passport = require('passport');
  var flash      = require('connect-flash');

  var configDB = require('./config/database.js');


   mongoose.connect(configDB.url);

  require('./config/passport')(passport); 

  app.configure(function() {


app.use(express.logger('dev')); 
app.use(express.cookieParser()); 
app.use(express.bodyParser()); 

app.set('view engine', 'ejs'); 


app.use(express.session({ secret: 'ilovescotchscotchyscotchscotch' })); 
app.use(passport.initialize());
app.use(passport.session()); 
app.use(flash()); 

    });


 require('./app/routes.js')(app, passport,worker);

 app.listen(port);



  console.log('The magic happens on port ' + port);

在 Route.js 文件中

我正在写这段代码

 module.exports = function(app, passport,worker) {
 app.get('/chat', function(req, res) {
    req.worker();
    res.redirect('/chat');
});

运行代码后我无法重定向到聊天页面

错误来了-

TypeError: Object # has no method 'worker' at C:\Users\Sanjay1\Desktop\fmodule\login\app\routes.js:11:7 at callbacks (C:\Users\Sanjay1\Desktop\node_modules\ express\lib\router\index.js:164:37) 在参数 (C:\Users\Sanjay1\Desktop\node_modules\express\lib\router\index.js:138:11) 在传递 (C:\Users\ Sanjay1\Desktop\node_modules\express\lib\router\index.js:145:5) 在 Router._dispatch (C:\Users\Sanjay1\Desktop\node_modules\express\lib\router\index.js:173:5)在 Object.router (C:\Users\Sanjay1\Desktop\node_modules\express\lib\router\index.js:33:10) 在下一个 (C:\Users\Sanjay1\Desktop\node_modules\express\node_modules\connect\ lib\proto.js:193:15) 在 Object.handle (C:\Users\Sanjay1\Desktop\node_modules\connect-flash\lib\flash.js:21:5) 在下一个 (C:\Users\Sanjay1\ Desktop\node_modules\express\node_modules\connect\lib\proto.js:193:15) 在 SessionStrategy.strategy.pass (C:\Users\Sanjay1\Desktop\node_modules\passport\lib\middleware\authenticate.js:314: 9)

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    你没有定义 req.worker() 方法。要使用 socket.io 并在一个文件中表达,请查看示例:

    /**
     * Module dependencies.
     */
    
    var express = require('express')
      , routes = require('./routes')
      , http = require('http');
    
    var app = express();
    var server = app.listen(3000);
    
    // Tell socket.io to work on the same port with express server
    var io = require('socket.io').listen(server);
    
    app.configure(function(){
      app.set('views', __dirname + '/views');
      app.set('view engine', 'jade');
      app.use(express.favicon());
      app.use(express.logger('dev'));
      app.use(express.static(__dirname + '/public'));
      app.use(express.bodyParser());
      app.use(express.methodOverride());
      app.use(app.router);
    });
    
    app.get('/', routes.index);
    
    io.sockets.on('connection', function(socket) {
        socket.on('message_to_server', function(data) {
            io.sockets.emit("message_to_client",{ message: data["message"] });
        });
    });
    

    例如got there

    【讨论】:

      猜你喜欢
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      相关资源
      最近更新 更多