Terminal curl: (7) Failed to connect to localhost port 3000: Connection refused

11,581

It looks like you didn't start your server, or it's running on a port other than the one you're expecting.

If this is a Rails app, rails c gets it going. If it's some other Rack based program you'll need to launch it another way, like with Pow.

Share:
11,581
Khuong
Author by

Khuong

Follow my twitter https://twitter.com/khuong291

Updated on June 04, 2022

Comments

  • Khuong
    Khuong almost 2 years

    I am using OSX Elcapitan, 10.11.6, when I run

    curl localhost:3000
    

    or

    curl localhost:3000 -4
    

    or

    curl 0.0.0.0:3000
    

    or

    curl -x "" "http://127.0.0.1:3000"
    

    It always says:

    curl: (7) Failed to connect to 127.0.0.1 port 3000: Connection refused

    ruby -v
    

    ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin13.0]

    my code:

    var http = require('http'),
        express = require('express'),
        path = require('path'),
        MongoClient = require('mongodb').MongoClient,
        Server = require('mongodb').Server,
        CollectionDriver = require('./collectionDriver').CollectionDriver;
    
    var app = express();
    app.set('port', process.env.PORT || 3000);
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'jade');
    var bodyParser = require('body-parser');
    app.use(bodyParser.urlencoded({extended: false}));
    
    var mongoHost = 'localHost';
    var mongoPort = 27017;
    var collectionDriver;
    
    var url = 'mongodb://localhost:27017/mongo-server';
    // Use connect method to connect to the server
    MongoClient.connect(url, function(error, db) {
      if (error) {
        console.error(error.message);
        process.exit(1);
      }
    
      console.log("Connected to MongoDB successfully.");
      collectionDriver = new CollectionDriver(db);
    });
    
    app.use(express.static(path.join(__dirname, 'public')));
    
    app.get('/', function (req, res) {
      res.send('<html><body><h1>Hello World</h1></body></html>');
    });
    
    app.get('/:collection', function(req, res) {
       var params = req.params;
       collectionDriver.findAll(req.params.collection, function(error, objs) {
              if (error) { res.send(400, error); }
              else {
                  if (req.accepts('html')) {
                      res.render('data',{objects: objs, collection: req.params.collection});
                  } else {
                  res.set('Content-Type','application/json');
                      res.send(200, objs);
                  }
             }
        });
    });
    
    app.get('/:collection/:entity', function(req, res) {
       var params = req.params;
       var entity = params.entity;
       var collection = params.collection;
       if (entity) {
           collectionDriver.get(collection, entity, function(error, objs) {
              if (error) { res.send(400, error); }
              else { res.send(200, objs); }
           });
       } else {
          res.send(400, {error: 'bad url', url: req.url});
       }
    });
    
    app.post('/:collection', function(req, res) {
        var object = req.body;
        var collection = req.params.collection;
        collectionDriver.save(collection, object, function(err,docs) {
              if (err) { res.send(400, err); }
              else { res.send(201, docs); }
         });
    });
    
    app.put('/:collection/:entity', function(req, res) {
        var params = req.params;
        var entity = params.entity;
        var collection = params.collection;
        if (entity) {
           collectionDriver.update(collection, req.body, entity, function(error, objs) {
              if (error) { res.send(400, error); }
              else { res.send(200, objs); }
           });
       } else {
           var error = { "message" : "Cannot PUT a whole collection" }
           res.send(400, error);
       }
    });
    
    app.delete('/:collection/:entity', function(req, res) {
        var params = req.params;
        var entity = params.entity;
        var collection = params.collection;
        if (entity) {
           collectionDriver.delete(collection, entity, function(error, objs) {
              if (error) { res.send(400, error); }
              else { res.send(200, objs); }
           });
       } else {
           var error = { "message" : "Cannot DELETE a whole collection" }
           res.send(400, error);
       }
    });
    
    app.use(function (req,res) {
        res.render('404', {url:req.url});
    });
    
    http.createServer(app).listen(app.get('port'), function(){
      console.log('Express server listening on port ' + app.get('port'));
    });