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

2022-08-30 04:43:34

我试图需要一个文件,然后把它传递给一个var。我正在按照本教程创建一个身份验证系统。在编写服务器.js文件并尝试编译后,我得到了一个BSON错误,因此我更改了在mongoose中需要它的发布版本的行。

这是我的代码和错误:

服务器.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);


答案 1

对我来说,当我做立即调用函数时,我需要放在.;require()

错误:

const fs = require('fs')

(() => {
  console.log('wow')
})()

好:

const fs = require('fs');

(() => {
  console.log('wow')
})()

答案 2

我认为这意味着在您的模块中没有被指定为函数,因此不会解析为函数,因此,您不能将其称为这样的函数。module.exports./app/routesrequire('./app/routes')require('./app/routes')(app, passport)

如果您希望我们对此进一步评论,请告诉我们。./app/routes

它应该看起来像这样;

module.exports = function(app, passport) {
    // code here
}

您正在导出一个函数,然后可以像 .require('./app/routes')(app, passport)


发生类似错误的另一个原因是,如果您有一个循环模块依赖项,其中模块 A 正在尝试,而模块 B 正在尝试 。当这种情况发生时,它将被子系统检测到,其中一个将返回,因此尝试将其称为函数将不起作用。在这种情况下,修复方法是删除循环依赖关系,通常是通过将公共代码分解为第三个模块来,尽管修复循环依赖关系的细节对于每种情况都是唯一的。require(B)require(A)require()null