2013-10-09 72 views
0

,當我嘗試運行node app.js我得到這個錯誤:找不到模塊中的Node.js「連接」

Error: Cannot find module 'connect' 
    ... 

我添加連接到我的package.json文件,當我運行npm update,似乎做一些事情,但實際上並沒有,我不知道該怎麼做,我只是毀了npm install express,我仍然得到了那個錯誤。 有幫助嗎?

app.js:

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

app.listen(8080); 

// routing 
app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

// usernames which are currently connected to the chat 
var usernames = {}; 

// rooms which are currently available in chat 
var rooms = ['room1','room2','room3']; 

io.sockets.on('connection', function (socket) { 

    // when the client emits 'adduser', this listens and executes 
    socket.on('adduser', function(username){ 
     // store the username in the socket session for this client 
     socket.username = username; 
     // store the room name in the socket session for this client 
     socket.room = 'room1'; 
     // add the client's username to the global list 
     usernames[username] = username; 
     // send client to room 1 
     socket.join('room1'); 
     // echo to client they've connected 
     socket.emit('updatechat', 'SERVER', 'you have connected to room1'); 
     // echo to room 1 that a person has connected to their room 
     socket.broadcast.to('room1').emit('updatechat', 'SERVER', username + ' has connected to this room'); 
     socket.emit('updaterooms', rooms, 'room1'); 
    }); 

    // when the client emits 'sendchat', this listens and executes 
    socket.on('sendchat', function (data) { 
     // we tell the client to execute 'updatechat' with 2 parameters 
     io.sockets.in(socket.room).emit('updatechat', socket.username, data); 
    }); 

    socket.on('switchRoom', function(newroom){ 
     // leave the current room (stored in session) 
     socket.leave(socket.room); 
     // join new room, received as function parameter 
     socket.join(newroom); 
     socket.emit('updatechat', 'SERVER', 'you have connected to '+ newroom); 
     // sent message to OLD room 
     socket.broadcast.to(socket.room).emit('updatechat', 'SERVER', socket.username+' has left this room'); 
     // update socket session room title 
     socket.room = newroom; 
     socket.broadcast.to(newroom).emit('updatechat', 'SERVER', socket.username+' has joined this room'); 
     socket.emit('updaterooms', rooms, newroom); 
    }); 

    // when the user disconnects.. perform this 
    socket.on('disconnect', function(){ 
     // remove the username from global usernames list 
     delete usernames[socket.username]; 
     // update list of users in chat, client-side 
     io.sockets.emit('updateusers', usernames); 
     // echo globally that this client has left 
     socket.broadcast.emit('updatechat', 'SERVER', socket.username + ' has disconnected'); 
     socket.leave(socket.room); 
    }); 
}); 

和我的package.json:

{ 
    "dependencies": { 
    "express": "3.1.0", 
    "socket.io": "*", 
    "connect": "*", 
    "underscore": "*" 
    } 
} 
+0

你加'VAR連接=需要( '連接');'? – prototype

+0

檢查'/ node_modules /'目錄,看看它是否在那裏。如果沒有,請嘗試'npm install'。如果不嘗試從package.json中刪除連接並運行'npm install connect --save' – prototype

+0

你可以發佈你的'package.json'內容,npm輸出和'app.js'內容嗎?這將有助於確定您的問題。 – Jondlm

回答

3

我相信npm update獲得已安裝模塊的新版本。正如@jondlm和@ user645715建議的那樣,使用npm installnpm install -d來告訴NPM在子文件夾中通過您的package.json和任何子package.json,將任何缺少的依賴關係安裝到./node_modules/中。或者使用sudo npm install --global connectconnect安裝到全局模塊文件夾中,以供未來的項目使用。

+0

我做了所有這些,但它停在某處安裝,我不知道該怎麼做。甚至要問什麼:( –

+0

)你可以顯示控制檯跟蹤嗎?當你運行'npm install'時是否失敗,或者是否成功,當你運行node.app時會失敗?另一個選項是刪除'node_modules'目錄和重新安裝。 – prototype

0

做這樣 須藤NPM安裝-g連接

它安裝連接在你正在工作的目錄文件夾,但如果u想將其鏈接到根文件夾只需鍵入。

須藤NPM鏈路連接

如果還是錯誤來然後平我請:)