You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Express中“TypeError: Router.use()需要中间件函数却收到字符串”错误?

错误原因及修复方案

问题根源

你碰到的TypeError: Router.use() requires a middleware function but got a string错误,是因为错误用app.use()设置视图引擎:

  • app.use()的作用是挂载中间件函数,要求传入的参数是函数类型,但你传入了两个字符串"view engine"和"jade",不符合方法要求,触发报错。
  • 代码末尾的module.exports = router;属于冗余代码,你没定义过router变量,必须删除。

修复后的完整代码

const express = require("express");
const bodyParser = require("body-parser");

const app = express();

// 用app.set替代app.use设置视图引擎
app.set("view engine", "jade");

app.get("/", function(req, res){
  res.send("Hello");
});

app.listen(3000, function() {
  console.log("Server started on port 3000");
});

关键修复说明

  • 把app.use("view engine", "jade");改成app.set("view engine", "jade");:app.set()是Express用来设置应用配置项的方法,视图引擎属于配置项,必须用该方法设置。
  • 删除module.exports = router;:代码里没创建router实例,这行代码不仅没用,还会引发router is not defined的额外错误。

内容的提问来源于stack exchange,提问作者Priti Surya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 12:02:00