首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >route.setRouter(app) ^ TypeError: route.setRouter不是函数

route.setRouter(app) ^ TypeError: route.setRouter不是函数
EN

Stack Overflow用户
提问于 2020-10-07 21:19:54
回答 1查看 47关注 0票数 0

我有这个问题

route.setRouter (应用程序) TypeError: route.setRouter不是命令中的函数,这是我的app.js

代码语言:javascript
复制
const express = require('express');
const bodyParser = require('body-parser');
const fs = require('fs');
const app = express();
const mongoose = require('mongoose');
const appConfig = require('./config/appConfig');
const socketLib = require('./app/libs/socketLib');
mongoose.set('useCreateIndex', true);

app.use(bodyParser.json());

// require routes
const routesPath = './app/routes'
fs.readdirSync(routesPath).forEach(file => {
    if (~file.indexOf('.js')) {
        let route = require(routesPath + '/' + file);
        route.setRouter(app);
    }
});

而且我已经安装了express

EN

回答 1

Stack Overflow用户

发布于 2020-10-07 22:44:32

我认为您应该反过来设置路由,即通过app.use(router)

例如,如果您的路由器模块包含以下内容:

代码语言:javascript
复制
/* router-test.js */
const express = require('express')
const router = express.Router()

router.get('/test', function (req, res) {
  res.send('Test from router')
})

module.exports = router;

然后,您可以按如下方式设置路由器:

代码语言:javascript
复制
const testRouter = require('./router-test');
...
app.use(testRouter);
// alternatively you can plug your router in beneath a path:
app.use('/somePath', testRouter);

因此,在您的示例中,您可能应该这样做(请注意,我已经用简单得多的.includes()更改了逐位~.indexOf() ):

代码语言:javascript
复制
fs.readdirSync(routesPath).forEach(file => {
    if (file.includes('.js')) {
        let route = require(routesPath + '/' + file);
        app.use(route);
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64244892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档