代码之家  ›  专栏  ›  技术社区  ›  Hide

use()需要一个中间件函数,但得到一个对象

  •  0
  • Hide  · 技术社区  · 6 年前

    现在,我使用node.js+express制作了一些api服务器。

    我安装了 babel-preset-latest 使用ES6语句。

    但是,当我编写一些代码时,它会抛出错误->

    Router.use() requires a middleware function but got a Object

    [索引.js]

    import express from 'express';
    import bodyParser from 'body-parser';
    
    const app = express();
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));
    
    app.get('/', (req, res) => {
        res.send('main');
    });
    app.use('/api', require('./api/auth'));
    
    app.listen(3000, () => {
        console.log("Express Running port 3000")
    })
    

    [/api/auth/index.js]

    import express from 'express';
    const router = express.Router();
    
    
    router.get('/', (res, req) => {
        res.send('auth main')
    });
    
    export default router;
    

    在ES6中, module.export 可以替换为 export 是的。

    但它会抛出错误。所以,在我更换 export default router; module.exports = router; ,它工作得很好。

    为什么我会犯这个错误?有语法错误吗?

    谢谢。

    1 回复  |  直到 6 年前
        1
  •  -1
  •   Hide    6 年前

    [解决]

    [索引.js]

    import express from 'express';
    import bodyParser from 'body-parser';
    import authRouter from './api/auth';
    
    const app = express();
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));
    
    app.get('/', (req, res) => {
        res.send('main');
    });
    app.use('/api', authRouter);
    
    app.listen(3000, () => {
        console.log("Express Running port 3000")
    })
    

    [/api/auth/index.js]

    import express from 'express';
    const router = express.Router();
    
    
    router.get('/', (res, req) => {
        res.send('auth main')
    });
    
    export default router;
    

    在index.js中,定义导入语句-> import authRouter from './api/auth';

    并替换 app.use('/api', require('./api/auth');

    app.use('/api', authRouter);