Express项目运行报TypeError: res.send is not a function错误求助
问题定位
- 核心原因是变量名冲突:你在POST路由的回调函数中,已经将
res作为Express响应对象的形参使用,后续又通过var res=num1+num2声明了同名变量,直接覆盖了原来的Express响应对象,字符串类型的计算结果自然不存在send方法,因此触发报错。 - 附加问题:
req.body中获取的num1、num2都是字符串类型,直接相加会得到字符串拼接结果,而非数值求和结果。
修复方案
修改计算结果的变量名,避免与响应对象res重名,同时对传入的参数做数值类型转换,修复后的代码如下:
const express = require('express'); const bodyParser=require('body-parser'); const app=express(); app.use(bodyParser.urlencoded({ extended: true })); app.get('/' , (req , res)=>{ res.sendFile(__dirname+"/index.html") }) app.post('/' , (req , res)=>{ var num1=Number(req.body.num1); var num2=Number(req.body.num2); // 修改变量名,不与res响应对象冲突 var result=num1+num2; res.send('Ans is: '+result); }); app.listen(3000,function(){ console.log('running'); });
内容的提问来源于stack exchange,提问作者ramkrushna
相关产品推荐
相关产品推荐

