首页 > 解决方案 > TypeError: app.use() 需要一个中间件函数

问题描述

每次我在添加用户路由后尝试运行应用程序时都会出现类似这样的错误

C:\Users\adity\Desktop\thinkster\medium-api\node_modules\express\lib\application.js:210
    throw new TypeError('app.use() requires a middleware function')
    ^

TypeError: app.use() requires a middleware function
    at Function.use (C:\Users\adity\Desktop\thinkster\medium-api\node_modules\express\lib\application.js:210:11)
    at Object.<anonymous> (C:\Users\adity\Desktop\thinkster\medium-api\app.js:15:5)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
[nodemon] app crashed - waiting for file changes before starting...

这是我的文件结构

文件结构

应用程序.js

const app = express();
app.use('./routes');

路线/index.js

const express = require('express');
const router = express.Router();
router.use('/api', require('./api'));
module.exports = router;

路线/api/index.js

const express = require('express');
const router = express.Router();
router.use('/', require('./users'));
module.exports = router;

路线/api/users.js

const express = require('express');
const router = express.Router();
router.get('/users', (req, res) => res.send('Hello world'));
module.exports = router;

我找到了一个名为 realworld.io 的网站,我正在遵循一种制作 nodejs API 的方法,但我每次都被卡住了。而且我找不到问题出在哪里。

标签: javascriptnode.js

解决方案


app.use('./routes');您的代码app.js不正确(只有一个字符串参数,违反了app.use() 语法)。

要正确定义“路线”,代码如下所示:

// app.js

const app = express();
const routes = require('./routes');

app.use('/', routes);

推荐阅读