我试图要求一个文件,然后将其传递给var。我正在按照本教程创建身份验证系统。编写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);
我认为这意味着module.exports
在您的./app/routes
模块中未将其分配为函数,因此因此require('./app/routes')
无法解析为函数,因此,您不能将其作为这样的函数来调用require('./app/routes')(app, passport)
。
向我们显示,./app/routes
如果您希望我们对此做进一步评论。
它看起来应该像这样;
module.exports = function(app, passport) {
// code here
}
您正在导出一个可以像这样调用的函数require('./app/routes')(app, passport)
。
可能发生类似错误的另一个原因是,如果您具有循环模块依赖关系,而模块A试图这样做,require(B)
而模块B试图这样做require(A)
。发生这种情况时,require()
子系统将检测到该错误,并且子系统之一将返回null
,因此尝试将其作为函数调用将不起作用。在这种情况下,解决方法是删除循环依赖关系,通常是通过将通用代码分解为第三个模块来完成,尽管固定每种情况下修复循环依赖关系的细节都是独特的,但两者都可以分别加载。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句