2014-04-19 2 views
0

Je suis ce tutorial. quand j'essaie de compiler le même code. J'ai l'erreur ci-dessous. Je ne peux pas comprendre ce type d'erreur.comment corriger l'erreur ci-dessous

C:\MyPolls>node app.js 

C:\MyPolls\node_modules\express\lib\router\index.js:291 
    throw new Error(msg); 
    ^
Error: .get() requires callback functions but got a [object Undefined] 
    at C:\MyPolls\node_modules\express\lib\router\index.js:291:11 
    at Array.forEach (native) 
    at Router.route (C:\MyPolls\node_modules\express\lib\router\index.js:287:13) 

    at Router.(anonymous function) [as get] (C:\MyPolls\node_modules\express\lib 
    \router\index.js:318:16) 
    at Function.app.(anonymous function) [as get] (C:\MyPolls\node_modules\expre 
    ss\lib\application.js:412:26) 
    at Object.<anonymous> (C:\MyPolls\app.js:35:5) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 

pourrait vous expliquer la s'il vous plaît cause de cette erreur et aussi je besoin d'une solution pour éviter cette erreur dans mon projet.

app.js

/** 
* Module dependencies. 
*/ 

var express = require('express'); 
var routes = require('./routes'); 
var user = require('./routes/user'); 
var http = require('http'); 
var path = require('path'); 

var app = express(); 

// all environments 
app.set('port', process.env.PORT || 3000); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 
app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.json()); 
app.use(express.urlencoded()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.static(path.join(__dirname, 'public'))); 

// development only 
if ('development' == app.get('env')) { 
    app.use(express.errorHandler()); 
} 

app.get('/', routes.index); 
app.get('/polls/polls', routes.list); 
app.get('/polls/:id', routes.poll); 
app.post('/polls', routes.create); 
app.get('/users', user.list); 

http.createServer(app).listen(app.get('port'), function(){ 
    console.log('Express server listening on port ' + app.get('port')); 
}); 
+1

Pouvez-vous modifier votre question pour inclure le code 'C: \ MyPolls \ app.js' autour de la ligne 35? – JohnnyHK

+0

J'ai inclus le fichier app.js. Jetez un coup d'oeil à travers ce code une fois. –

Répondre

0

Enfin, j'ai compris le problème et je l'ai rectifié. La raison du problème est la ligne de code ci-dessous.

app.get('/users', user.list); 

quand je commence à modifier le projet de pile moyenne, j'ai supprimé le fichier user.js dans mon répertoire de projet, mais j'oublier de supprimer la ligne de code ci-dessus dans mon fichier app.js. Merci à tous pour votre réponse.

1

.get() nécessite des fonctions de rappel, mais a obtenu un [objet non défini] signifie que

Vous avez un itinéraire défini comme app.get ('/ polls/polls', routes.list); Mais routes.list est undefined.

Je suppose donc 1. Vous n'avez pas ajouté require ('routes') dans votre fichier où vous définissez app.get. 2. Ou Vous n'avez pas implémenté le rappel routes.list.

Malheureusement, je ne pouvais pas télécharger le tutoriel à partir du lien. Pouvez-vous le mettre quelque part comme une boîte de dépôt et le partager.

+0

J'ai déjà ajouté require ('routes'). J'ai été mis à jour ma question là en incluant le fichier app.js. S'il vous plaît voir le problème une fois. –