NodeJs:TypeError:require(…)不是一个函数

我想要一个文件,然后传递给一个变种。 我正在按照这个教程创build一个authentication系统。 在编写server.js文件并尝试编译后,我得到了一个bson错误,因此我改变了需要在mongoose中发布版本的那一行。

这里是我的代码和错误:

server.js

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

错误

 require('./app/routes')(app, passport); ^ TypeError: require(...) is not a function at Object.<anonymous> (d:\Node JS learning\WorkWarV2\server.js:38:24) at Module._compile (module.js:434:26) at Object.Module._extensions..js (module.js:452:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:475:10) at startup (node.js:117:18) at node.js:951:3 Process finished with exit code 1 

我已经读了这通常意味着requireJS没有得到正确加载,但我不知道为什么或如何解决它。

编辑由于评论:

如问, 这里是console.log(require);的结果console.log(require);

我认为这意味着你的./app/routes模块中的./app/routes没有被赋值为一个函数,所以require('./app/routes')不能parsing为一个函数,所以你不能把它称为像这样的functionrequire('./app/routes')(app, passport)

告诉我们./app/routes是否需要我们进一步评论。

对我来说,这是一个循环依赖的问题。

IOW,模块A需要模块B,模块B需要模块A.

所以在模块B中, require('./A')是一个空对象,而不是一个函数。

如何处理Node.js中的循环依赖关系

安装autoloader模块解决了我的问题。

 npm install autoloader. 

并且修改你的代码如下。From: require('autoloader').autoload(__dirname + '/src'); require('autoloader')(__dirname + '/src');

注意:确保模块名称..自动加载,我们有很多模块..

记得导出你的routes.js

routes.js ,将您的路由和所有代码写入此function模块中:

 exports = function(app, passport) { /* write here your code */ }