2014-06-28 6 views
7

J'ai créé une application avecÀ partir Node.js demande express

$ express -c stylus express_example 

Je peux commencer mon serveur avec

$ npm start 

mais

$ node app.js 

&

$ nodemon app.js 

ne semblent pas fonctionner. Je ne reçois aucun message d'erreur, le terminal passe juste à la ligne suivante. par exemple.

$ node app.js 
$ 

Ceci est mon fichier bin/www

#!/usr/bin/env node 
var debug = require('debug')('my-application'); 
var app = require('../app'); 

app.set('port', process.env.PORT || 3000); 

var server = app.listen(app.get('port'), function() { 
    debug('Express server listening on port ' + server.address().port); 
}); 

et mes app.js fichier

var express = require('express'); 
var path = require('path'); 
var favicon = require('static-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 

var app = express(); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 

app.use(favicon()); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded()); 
app.use(cookieParser()); 
app.use(require('stylus').middleware(path.join(__dirname, 'public'))); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 

/// catch 404 and forwarding to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

/// error handlers 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
     res.status(err.status || 500); 
     res.render('error', { 
      message: err.message, 
      error: err 
     }); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: {} 
    }); 
}); 

module.exports = app; 
+0

avez-vous un message d'erreur? – soulcheck

+0

postez votre app.js – soulcheck

Répondre

14

Compris. Depuis mon serveur est démarré dans le fichier bin/www par opposition au fichier app.js, à partir du terminal que je suis entré dans mon répertoire bin, puis appelé

$ node wwww 

ou

$ nodemon www 
3

Votre npm start appelle probablement votre fichier bin/www. Qui contient l'invocation listen pour démarrer votre application.

De nombreuses personnes ont configuré leur application de cette façon. par exemple. app.js pour définir et configurer leur application, et quelque chose comme bin/www pour obtenir le fonctionnement du serveur. De cette façon, ils peuvent inclure le app.js dans d'autres parties, par exemple des tests, sans réellement démarrer le serveur lorsque vous le require.

1

Vous avez en votre fichier package.json une propriété où vous pouvez indiquer le point d'entrée de votre application. Par exemple:

"scripts": { 
    "start": "node ./bin/www" 
}