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

Postman无法接收Node.js后端响应问题求助

问题原因

你误用了fs.readFileSync和fs.writeFileSync这两个同步文件操作方法——同步方法不支持传入回调函数,你写的回调代码永远不会执行,导致res.send从未被调用,Postman自然收不到任何响应。另外,同步操作出错时会直接抛出未捕获的异常,也会导致请求挂起或服务器崩溃。

修正方案

方案1:改用异步文件操作(推荐)

异步操作不会阻塞服务器主线程,更适合后端服务场景:

import express from 'express';
import * as fs from 'fs';
import { dirname } from 'path';
import { fileURLToPath } from 'url';
import bodyParser from "body-parser";
import cors from "cors";

const app = express();
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.post("/register", function(req, res) {
  // 异步读取文件
  fs.readFile(__dirname + "/users.json", 'utf8', function (err, data) {
    if (err) {
      return res.send(JSON.stringify("error"));
    }
    try {
      const users = JSON.parse(data);
      users["users"].push(req.body);
      // 异步写入文件
      fs.writeFile(__dirname + "/users.json", JSON.stringify(users), 'utf8', function (err) {
        if (err) {
          return res.send(JSON.stringify("error"));
        }
        res.send(JSON.stringify("Created"));
      });
    } catch (parseErr) {
      res.send(JSON.stringify("error: invalid json format"));
    }
  });
});

const server = app.listen(8081, function() {
  console.log("server start running");
});

方案2:修复同步操作的写法

如果一定要用同步操作,需去掉回调,改用try/catch捕获所有异常:

import express from 'express';
import * as fs from 'fs';
import { dirname } from 'path';
import { fileURLToPath } from 'url';
import bodyParser from "body-parser";
import cors from "cors";

const app = express();
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.post("/register", function(req, res) {
  try {
    // 同步读取直接返回结果
    const data = fs.readFileSync(__dirname + "/users.json", 'utf8');
    const users = JSON.parse(data);
    users["users"].push(req.body);
    // 同步写入无返回值,出错直接抛异常
    fs.writeFileSync(__dirname + "/users.json", JSON.stringify(users), 'utf8');
    res.send(JSON.stringify("Created"));
  } catch (err) {
    // 捕获读取、解析、写入全流程异常
    res.send(JSON.stringify("error"));
  }
});

const server = app.listen(8081, function() {
  console.log("server start running");
});
额外注意
  • 确保users.json初始格式正确,比如内容为{"users": []},否则JSON.parse会报错。
  • Postman请求需选择POST方法,请求体切换为raw->JSON格式,避免格式不匹配导致解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:10:59