Javascript 使用module.exports=router,但仍然获取router.use()需要一个中间件函数,但获取了一个对象

Javascript 使用module.exports=router,但仍然获取router.use()需要一个中间件函数,但获取了一个对象,javascript,node.js,typescript,Javascript,Node.js,Typescript,我浏览了整个互联网,我能找到的只有: “确保在路由器文件末尾添加module.exports=router” 我的路由器文件如下: let router = express.Router(); const staticOptions = { root: path.join(__dirname, "./../../assets") }; // a bunch of router.get() functions module.exports = router; // a

我浏览了整个互联网,我能找到的只有: “确保在路由器文件末尾添加module.exports=router”

我的路由器文件如下:

let router = express.Router();

const staticOptions = {
  root: path.join(__dirname, "./../../assets")
};

// a bunch of router.get() functions

module.exports = router;
// auth/google


import * as googleAuthRouter from "./api/AccountLinking/googleAuth";
...

app.use("/auth/google", googleAuthRouter);
然后,我继续将其导入我的server.ts文件,如下所示:

let router = express.Router();

const staticOptions = {
  root: path.join(__dirname, "./../../assets")
};

// a bunch of router.get() functions

module.exports = router;
// auth/google


import * as googleAuthRouter from "./api/AccountLinking/googleAuth";
...

app.use("/auth/google", googleAuthRouter);
但我仍然得到以下错误:

TypeError: Router.use() requires a middleware function but got a Object
我只有一条路由,我正在导入server.js文件。我刚刚开始这个项目。我在网上看到的每个地方都说:“你只需要做module.exports=router,它就会修复它。”在这种情况下,它不会。我做错了什么


Typescript让我发疯,严重阻碍了我的开发工作。我很快就要放弃了,回到普通的JS,将导入更改为需要:

const googleAuthRouter = require('./api/AccountLinking/googleAuth');

app.use("/auth/google", googleAuthRouter);

这回答了你的问题吗?不幸的是没有。正如其中一个答案所说,在express 3.0+中app.router被贬值了。其他答案只是建议了我上面写的内容:使用module.exports=router,这不起作用,我继续并将其更改为import-googleAuthRouter=require(“./api/AccountLinking/googleAuth”);它成功了。您的解决方案很可能也会起作用,因此我选择它作为解决方案。谢谢你,尤里