将对象传递给require()时,inputtypeError

我得到typeError:对象不是一个函数

当我运行:

节点server.js

为下面的代码行

require('./app/routes.js')(app, passport); 

从我的server.js文件的以下代码:

 // server.js // set up ====================================================================== // get all the tools we need var express = require('express'); var app = express(); var port = process.env.PORT || 8080; var mongoose = require('mongoose'); var passport = require('passport'); var flash = require('connect-flash'); var morgan = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session'); var configDB = require('./config/database.js'); // configuration ================================================================ mongoose.connect(configDB.url); // connect to our database // require('./config/passport')(passport); // pass passport for configuration // set up our express application app.use(morgan('dev')); // log every request to the console app.use(cookieParser()); // read cookies (needed for auth) app.use(bodyParser.json()); // get info from html forms app.use(bodyParser.urlencoded({ extended: true})); app.set('view engine', 'ejs'); // set up ejs for templating // requirements for passport: app.use(session({ secret: 'ilovescotchscotchyscotchscotch'})); app.use(passport.initialize()); app.use(passport.session()); // persistent login sessions app.use(flash()); // use connect-flash for flash messages stored in session // routes ======================================================================== require('./app/routes.js')(app, passport); // load our routes and pass in our app and fully configured passport // launch ======================================================================= app.listen(port); console.log('The magic happens on port ' + port); 

不完全确定这是为什么发生…

我正在按照这个教程顺便说一句: https : //scotch.io/tutorials/easy-node-authentication-setup-and-local

谢谢!

根据你的意见:这篇文章做了一个很好的解释如何在NodeJS中工作(这不是一个Javascript的东西)。 基本上,每个可以被要求的文件通常都被期望导出需要文件可以分配给variables的东西(例如var someVar = require('someFile'); )。 如果导出的值是一个函数,那么您可以在分配给该variables之前立即调用它(例如var someVar = require('someFile')(params); )。 对于你的错误,看起来文件./app/routes.js不是导出函数。

FILE:./app/routes.js

 // some code that does cool stuff // ... // Time to expose whatever we want to the requiring file module.exports = someObject; // Or value, function, etc. 

FILE:main.js

 // we want cool stuff from routes.js var coolStuff = require('./app/routes.js'); // someObject from ./app/routes.js is now assigned to coolStuff coolStuff(); // ERROR: object is not a function console.log(typeof coolStuff) // "object"