0

当我尝试node server.js从我的 plesk node 命令运行时,我收到了来自命令的错误。

我从命令中得到以下错误:

> mongochat@1.0.0 start /var/www/vhosts/domain.win/console
> node server.js

events.js:165
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::4000
    at Server.setupListenHandle [as _listen2] (net.js:1345:14)
    at listenInCluster (net.js:1386:12)
    at Server.listen (net.js:1474:7)
    at Server.listen.Server.attach (/var/www/vhosts/domain.win/console/node_modules/socket.io/lib/index.js:273:9)
    at new Server (/var/www/vhosts/domain.win/console/node_modules/socket.io/lib/index.js:59:17)
    at Function.Server [as listen] (/var/www/vhosts/domain.win/console/node_modules/socket.io/lib/index.js:44:41)
    at Object.<anonymous> (/var/www/vhosts/domain.win/console/server.js:2:37)
    at Module._compile (module.js:649:30)
    at Object.Module._extensions..js (module.js:660:10)
    at Module.load (module.js:561:32)
Emitted 'error' event at:
    at emitErrorNT (net.js:1365:8)
    at process._tickCallback (internal/process/next_tick.js:114:19)
    at Function.Module.runMain (module.js:692:11)
    at startup (bootstrap_node.js:194:16)
    at bootstrap_node.js:666:3
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! mongochat@1.0.0 start: `node server.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the mongochat@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /var/www/vhosts/domain.win/.npm/_logs/2018-08-18T09_01_29_349Z-debug.log

虽然从 2018-08-18T09_01_29_349Z-debug.log 得到以下信息

0 info it worked if it ends with ok
1 verbose cli [ '/opt/plesk/node/9/bin/node',
1 verbose cli   '/opt/plesk/node/9/bin/npm',
1 verbose cli   'run',
1 verbose cli   'start' ]
2 info using npm@5.6.0
3 info using node@v9.10.1
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle mongochat@1.0.0~prestart: mongochat@1.0.0
6 info lifecycle mongochat@1.0.0~start: mongochat@1.0.0
7 verbose lifecycle mongochat@1.0.0~start: unsafe-perm in lifecycle true
8 verbose lifecycle mongochat@1.0.0~start: PATH: /opt/plesk/node/9/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/var/www/vhosts/domain.win/console/node_modules/.bin:/opt/plesk/node/9/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
9 verbose lifecycle mongochat@1.0.0~start: CWD: /var/www/vhosts/domain.win/console
10 silly lifecycle mongochat@1.0.0~start: Args: [ '-c', 'node server.js' ]
11 silly lifecycle mongochat@1.0.0~start: Returned: code: 1  signal: null
12 info lifecycle mongochat@1.0.0~start: Failed to exec start script
13 verbose stack Error: mongochat@1.0.0 start: `node server.js`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/opt/plesk/node/9/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:285:16)
13 verbose stack     at EventEmitter.emit (events.js:180:13)
13 verbose stack     at ChildProcess.<anonymous> (/opt/plesk/node/9/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:180:13)
13 verbose stack     at maybeClose (internal/child_process.js:936:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)
14 verbose pkgid mongochat@1.0.0
15 verbose cwd /var/www/vhosts/domain.win/console
16 verbose Linux 3.10.0-862.3.3.el7.x86_64
17 verbose argv "/opt/plesk/node/9/bin/node" "/opt/plesk/node/9/bin/npm" "run" "start"
18 verbose node v9.10.1
19 verbose npm  v5.6.0
20 error code ELIFECYCLE
21 error errno 1
22 error mongochat@1.0.0 start: `node server.js`
22 error Exit status 1
23 error Failed at the mongochat@1.0.0 start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

这是简单的 server.js

const mongo = require('mongodb').MongoClient;
const client = require('socket.io').listen(4000).sockets;

// Connect to mongo
mongo.connect('mongodb://***:***@ds121382.mlab.com:21382/db', function(err, db){
    if(err){
        throw err;
    }

    console.log('MongoDB connected...');

    // Connect to Socket.io
    client.on('connection', function(socket){
        let chat = db.collection('chats');

        // Create function to send status
        sendStatus = function(s){
            socket.emit('status', s);
        }

        // Get chats from mongo collection
        chat.find().limit(100).sort({_id:1}).toArray(function(err, res){
            if(err){
                throw err;
            }

            // Emit the messages
            socket.emit('output', res);
        });

        // Handle input events
        socket.on('input', function(data){
            let name = data.name;
            let message = data.message;

            // Check for name and message
            if(name == '' || message == ''){
                // Send error status
                sendStatus('Please enter a name and message');
            } else {
                // Insert message
                chat.insert({name: name, message: message}, function(){
                    client.emit('output', [data]);

                    // Send status object
                    sendStatus({
                        message: 'Message sent',
                        clear: true
                    });
                });
            }
        });

        // Handle clear
        socket.on('clear', function(data){
            // Remove all chats from collection
            chat.remove({}, function(){
                // Emit cleared
                socket.emit('cleared');
            });
        });
    });
});

包.json

{
  "name": "mongochat",
  "version": "1.0.0",
  "description": "Simple chat app using sockets",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "mongodb": "^2.2.30",
    "socket.io": "^2.0.3"
  }
}
4

1 回答 1

0

另一个服务器可能已经在端口 4000 上运行。尝试另一个端口或关闭已经运行的服务器。

于 2018-08-18T09:52:13.347 回答