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

Node.js Express函数使用入门求助:变量相加返回响应问题

问题排查与修复方案

你的代码存在几个关键问题,导致无法正确返回相加结果,下面逐一说明并给出修复后的代码:

问题点分析

  • 路由回调写法错误:app.get('/',(sampler),(req,res)=>{}) 这种写法把sampler当成了Express中间件,但它不符合中间件的格式要求(中间件需要接收req、res、next三个参数),而且你并没有调用它来获取计算结果。
  • 变量作用域问题:s是sampler函数内部的局部变量,外部的路由回调根本访问不到这个变量。
  • res.send的类型问题:直接传递数字给res.send时,Express会把它识别成HTTP状态码,而非响应内容,需要转换成字符串或对象再返回。
  • bodyParser的冗余使用:Express 4.16.0及以上版本已经内置了JSON解析功能,不需要单独引入bodyParser,用express.json()即可。

修复后的代码

const express = require('express');
const app = express();

// 替换bodyParser.json()为内置的express.json()
app.use(express.json());

function sampler(){
    const a = 1;
    const b = 2;
    return a + b;
}

app.get('/', (req, res) => {
    // 调用sampler函数获取相加结果
    const result = sampler();
    // 将结果转为字符串返回,避免被当成状态码
    res.send(`相加结果:${result}`);
    // 也可以用JSON格式返回:res.json({ result: result })
})

app.listen(2300, () => {
    console.log('服务器运行在http://localhost:2300');
});

额外拓展(可选)

如果需要让用户自定义传入a和b的值,而非固定写死,可以通过URL查询参数实现:

app.get('/', (req, res) => {
    // 从查询参数中获取a和b,默认值设为0避免NaN
    const a = parseInt(req.query.a) || 0;
    const b = parseInt(req.query.b) || 0;
    const result = a + b;
    res.send(`相加结果:${result}`);
})

此时访问http://localhost:2300?a=3&b=5就能得到8的计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:45:52