node handling error eaddrinuse javascript node.js deployment express

javascript - handling - error: listen eaddrinuse:::3000



Servidor Express: Error: Rango solicitado no satisfactorio (3)

Estoy escribiendo mi primer servidor web nodo (no dude en darme su opinión) que utiliza express y gith para implementar. El problema es que recibo el siguiente error una vez que se despliega, y si ejecuto el script a través de pm2 el proceso aparentemente se elimina. ¿Algunas ideas? El script se adjunta a continuación.

sudo node server.js Error: Requested Range Not Satisfiable at SendStream.error (/home/gareth/node_modules/express/node_modules/send/lib/send.js:145:16) at SendStream.send (/home/gareth/node_modules/express/node_modules/send/lib/send.js:371:19) at /home/gareth/node_modules/express/node_modules/send/lib/send.js:323:10 at /home/gareth/node_modules/newrelic/node_modules/continuation-local-storage/node_modules/async-listener/glue.js:177:31 at Object.oncomplete (fs.js:107:15) Completed deployment

Server.js

/* Webserver Should use port 80 on production Mongo DB for database - http://docs.mongodb.org/manual/tutorial/ Use pm2 to ensure it runs forever and load balanced NPM https://www.npmjs.org/package/fs https://www.npmjs.org/package/express https://www.npmjs.org/package/body-parser https://www.npmjs.org/package/gith https://www.npmjs.org/package/nodemailer */ // server monitoring require(''newrelic''); var APP = { // include some scripts express: require(''express''), fs: require(''fs''), mdb: require(''mongodb''), nodemailer: require(''nodemailer''), gith: require(''gith'').create(9001), execFile: require(''child_process'').execFile, // setup port: 80, dbUrl: ''mongodb://127.0.0.1:27017/test'', gitRepo: ''*****'', gmailUser: ''*****'', gmailPass: ''******'', email: ''*****'', subject: ''Website enquiry'', linuxUser: ''*****'', wwwPath: ''/var/www/'', // vars server: null, app: null, options: {}, smtpTransport: null, db: null, init: function (){ // setup express APP.app = APP.express().use(require(''body-parser'')()); // create the server APP.fs.exists(''./ssl/privatekey.pem'', function (e){ if(e){ APP.fs.exists(''./ssl/certificate.pem'', function (e){ if(e){ APP.options = { key: APP.fs.readFileSync(''./ssl/privatekey.pem''), cert: APP.fs.readFileSync(''./ssl/certificate.pem''), }; APP.server = require(''http'').createServer(APP.options, APP.app).listen(APP.port, ''0.0.0.0''); } else { APP.server = require(''http'').createServer(APP.app).listen(APP.port, ''0.0.0.0''); } }); } else { APP.server = require(''http'').createServer(APP.app).listen(APP.port, ''0.0.0.0''); } }); // set up smtp APP.smtpTransport = APP.nodemailer.createTransport(''Gmail'',{ auth: { user: APP.gmailUser, pass: APP.gmailPass, } }); // http routing APP.routing(); // wait for github push APP.gith({ repo: APP.gitRepo }).on(''all'', function(payload){ if(payload.branch === ''master'' && payload.original.commits[0].message.indexOf(''#deploy'') >= 0){ APP.execFile(''/home/''+APP.linuxUser+''/deploy.sh'', function(err, stdout, stderr) { console.log(''Completed deployment''); }); } }); }, // open the db openDB: function (){ APP.mdb.connect(APP.dbURL, function(err, db){ if(err) throw err; APP.db = db; }); }, // close the db closeDB: function (){ APP.db.close(); }, // insert a file to the db create: function (col, data){ // open the db APP.openDB(); var collection = APP.db.collection(col); collection.insert(data, function(err, docs){ if(err){ console.warn(err.message); } else { console.log(''Successfully inserted record''); } }); // close the db APP.closeDB(); }, // insert a file to the db update: function (col, crit, data){ // open the db APP.openDB(); // example criteria // {key: value} // get something specific // {key: {$lt: value}} // Less Than // {key: {$gte: value}} // Greater than or equal to // {key: {$ne: ''value''}} // Not Equal To // {key: {$in: [''value'', ''value'', ''value'']}} // Exists in array // updateoperators // db.col.update({key: ''value''}, {$addToSet: {key: [''value'']}}); // Or we can add a new field to Cash // db.col.update({key: ''value''}, {$set: {''age'': 50} }); // You can also push and pull items from arrays: // db.col.update({key: ''value''}, {$push: {''key'': ''value''} }); // db.col.update({key: ''value''}, {$pull: {''key'': ''value''} }); var collection = APP.db.collection(col); collection.update(crit, data, function (){ if(err){ console.warn(err.message); } else { console.log(''Successfully updated record''); } }); // close the db APP.closeDB(); }, // find all in the db collection that match read: function (col, crit){ // open the db APP.openDB(); // example criteria // {key: value} // get something specific // {key: {$lt: 5}} // Less Than // {key: {$gte: 10}} // Greater than or equal to // {key: {$ne: ''b''}} // Not Equal To // {key: {$in: [''a'', ''b'', ''c'']}} // Exists in array var collection = APP.db.collection(col); collection.find(crit).toArray(function(err, results) { if(err){ console.warn(err.message); } else { console.log(results); } }); // close the db APP.closeDB(); }, // find and delete from collection delete: function (col, crit){ // open the db APP.openDB(); // example criteria // {key: value} // get something specific // {key: {$lt: 5}} // Less Than // {key: {$gte: 10}} // Greater than or equal to // {key: {$ne: ''b''}} // Not Equal To // {key: {$in: [''a'', ''b'', ''c'']}} // Exists in array var collection = APP.db.collection(col); collection.remove(crit); // close the db APP.closeDB(); }, // routing files routing: function (){ // hide the engine creating the server APP.app.disable(''x-powered-by''); // index page APP.app.get(''/*'', function (req, res, next){ APP.renderPage(req, res, next); }); // handle post data APP.app.post(''/'', function(req, res, next) { APP.sendEmail(req); APP.renderPage(req, res, next); }); APP.app.post(''/index.html'', function(req, res, next) { APP.sendEmail(req); APP.renderPage(req, res, next); }); }, // render page renderPage: function (req, res, next){ // get the host and point to correct folder var host = req.get(''host''); if(host.indexOf(''www.'') >= 0){ host = host.replace(''www.'', ''''); } // see if we are on staging if(host.indexOf(''staging.'') >= 0){ // tidy url host = host.replace(''staging.'', ''''); var url = APP.wwwPath + host + ''/app''; APP.fs.exists(url + req.url, function (e){ if(e){ res.sendfile(url + req.url); } else { res.sendfile(url + ''/404.html''); } }); } else { var url = APP.wwwPath + host + ''/dist''; APP.fs.exists(url + req.url, function (e){ if(e){ res.sendfile(url + req.url); } else { res.sendfile(url + ''/404.html''); } }); } }, // sanitize post sendEmail: function (req){ var name = req.body.name, email = req.body.email, msg = req.body.msg, nameRegex = /^([ /u00c0-/u01ffa-zA-Z''/-])+$/, emailRegex = /^(([^<>()[/]//.,;:/s@/']+(/.[^<>()[/]//.,;:/s@/']+)*)|(/'.+/'))@((/[[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/])|(([a-zA-Z/-0-9]+/.)+[a-zA-Z]{2,}))$/; if(emailRegex.test(email) && nameRegex.test(name) && msg.length > 10){ // setup e-mail data with unicode symbols var mailOptions = { from: name + '' <'' + email + ''>'', to: APP.email, subject: APP.subject, text: msg, html: ''<p>''+ msg +''</p>'' } // send mail with defined transport object APP.smtpTransport.sendMail(mailOptions, function(error, response){ if(error){ console.log(error); }else{ console.log(''Message sent: '' + response.message); } // shut down the connection pool - no more messages //smtpTransport.close(); }); } } }; // run the script APP.init();


¿No deberías usar require(''https'') ? También investigue express.static ...


Parece que el error está saliendo de su script deploy.sh.

Para solucionar esto, asegúrese de que las solicitudes salientes no tengan el Content-Range .

También podría ayudar a publicar el deploy.sh


Intente pasar acceptRanges: false como argumento al método res.sendFile.

Entonces, en lugar de llamar a res.sendFile(filePath) use res.sendFile(filePath, {acceptRanges: false})