app.set('port', port) 'TypeError: undefined n'est pas une fonction". Débutant, besoin d'idées
Je suis un amateur d'apprendre à construire avec node.js. J'ai suivi un tutoriel pour créer mon premier node.js app. Il a fonctionné parfaitement jusqu'à ce que j'ai entré 'npm démarrer". Le journal est:
C:\node\nodeteest3\bin\www:16
TypeError: undefined is not a function
at Object.<anonymous> M+<C;\node\nodetest3\bin\www:16:5
at Module_compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.module.runMain (module.js:501:10)
at startup(node.js:129:16)
at node.js:814:3
Puis elle sortie d'environ 20 lignes commençant par "npm ERR! "+ filepaths, que je ne pense pas que, du fait que l'erreur semble être dans le fichier bin. Le code est
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('nodetest3:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
C'est là l'erreur des points:
[app.set('port', port);]
-------^erreur de pointeur 's'-donc clairement à propos des------------
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
//named pipe
return val;
}
if (port >= 0) {
//port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
//handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
Like I said in the beginning, I'm a complete beginner with command-line/github, but I'm already in love with it. I try to practice it every night after I finish my homework, and am getting really frustrated about getting stuck because I haven't been able to move forward for four days now. Also, I'm running this on node.js and the OS is Windows 8. Anything helps! Let me know if you want me to post any of the other code; I omitted so as to not add more than necessary.
"../app (app.js file) JUST ADDED"***************************
../app file:
[ App.js ]
var express = require('express');
var path = require('path');
var favicon = require('serve-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();
/// catch 404 and forwarding to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
var app = express();
//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
});
});
}
var app = express();
//view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
//uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json({estended: true}));
app.use(bodyParser.urlencoded({extended: true}));
app.use(cookieParser({extended:true}));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
// 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: {}
});
});
Quel est le contenu du fichier
C'est mon app.js page ------------------------------------------
Qui semblait fonctionner! Je l'ai connecté au port de 300, et lorsque je me connecte à cette page, je reçois un Pas Trouvé d'erreur 404. Cela signifie que je suis au moins j'
Je suis connecté, non? Désolé taraudés entrée tout en tapant sur l'accident. Je vais la poster erreur de commentaire après je l'ai attraper.
../app
que vous avez importées comme app
variable. Vérifier si vous avez correctement l'exportation express app à ../app
fichier à l'aide de module.exports
. Il semble que le nœud voit app
variable non comme une instance d'un express app.C'est mon app.js page ------------------------------------------
Qui semblait fonctionner! Je l'ai connecté au port de 300, et lorsque je me connecte à cette page, je reçois un Pas Trouvé d'erreur 404. Cela signifie que je suis au moins j'
Je suis connecté, non? Désolé taraudés entrée tout en tapant sur l'accident. Je vais la poster erreur de commentaire après je l'ai attraper.
OriginalL'auteur alexcarll | 2015-05-12
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas exporter quoi que ce soit dans le
app.js
fichier. À la fin deapp.js
fichier, inclure la ligne suivante.Voir si le problème disparaît.
Et un complément: vous avez
var app = express();
deux fois dans votreapp.js
.OriginalL'auteur Deepal
Intaned de l'appel à l'exportation, veuillez utiliser le module.exporter la fin de la fin de votre script.
exports = app;module.exports = app;
OriginalL'auteur Petr Odstrcil
Vous n'avez pas déclaré de toute fonction appelée
set
à l'intérieur de laapp.js
fichier.Créer la fonction et de l'exporter comme ceci:
Si ce
app
est l'expressapp
yo especify un port comme ceci:au lieu de
C'est parce que le port est une propriété du serveur http et non pas de l'express app
Vous pouvez aussi utiliser
DE SE! merci! Cela a été me rend fou depuis quelques jours!
var server = createServer(app).port(port);
vous pouvez aussi utiliser l'application.écouter(port);
OriginalL'auteur fuelusumar
Au bas de votre app.js:
OriginalL'auteur Flaudre
Dans mon cas, j'ai simplement déplacé le normalizePort fonction avant que la fonction a été appelée. C'était en coffeescript, mais je l'ai converti en javascript ici.
OriginalL'auteur Loubot
Juste ajouter un module".les exportations=app;" dans le app.js fichier.
OriginalL'auteur Shubham Jaiswal