app.set('port', port) 'TypeError: undefined is not a function'.初学者,需要思路 [英] app.set('port', port) 'TypeError: undefined is not a function'. Beginner, need ideas

查看:48
本文介绍了app.set('port', port) 'TypeError: undefined is not a function'.初学者,需要思路的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一个学习使用 node.js 构建的业余爱好者.我一直在按照教程来创建我的第一个 node.js 应用程序.在我输入npm start"之前,它运行良好.日志是:

I'm an amateur learning to build with node.js. I've been following a tutorial to create my first node.js app. It worked perfectly until I entered 'npm start'. The log is:

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

然后它输出大约 20 行以npm ERR!"+ 文件路径开头,我认为没有必要,因为错误似乎在 bin 文件中.这个代码是

Then it output about 20 lines starting with "npm ERR! " + filepaths, that I don't think are necessary, as the error seems to be in the bin file. The code for this is

#!/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');

这是错误指向的地方:

[app.set('port', port);]

-------^ 's' 处的错误指针--关于 set 的内容很清楚------------

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: {}
    });
});

推荐答案

您没有导出 app.js 文件中的任何内容.在 app.js 文件的末尾,包括以下行.

You are not exporting anything in the app.js file. At the end of app.js file, include following line.

module.exports = app;

看看您的问题是否消失了.

See whether your problem goes away.

还有一个补充:你的 app.js 中有两次 var app = express();.

And one more addition: you have var app = express(); twice in your app.js.

这篇关于app.set(&amp;#39;port&amp;#39;, port) &amp;#39;TypeError: undefined is not a function&amp;#39;.初学者,需要思路的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆