Express接口响应状态200但未返回res.send发送的数据是什么原因?
问题根源
你的问题和CORS完全无关,CORS是仅在浏览器侧生效的跨域安全限制,两个Node.js服务之间的HTTP请求不会触发CORS校验,因此你的CORS配置和当前问题没有关联。
问题出在node-fetch库的调用方式错误:fetch方法返回的是原始HTTP响应对象,仅包含状态码、响应头等元数据,服务端返回的响应体需要你主动调用对应方法解析后才能获取。
解决方法
根据服务端返回的内容类型调用对应的响应体解析方法,你当前返回的是纯文本,所以需要调用.text()方法(如果返回的是JSON格式则调用.json()方法),该方法是异步的,需要链式处理或用async/await语法调用。
修改后的请求端示例代码
import fetch from "node-fetch"; const url = "http://localhost:4000/test"; import express from "express"; const app = express(); fetch(url) .then(response => { // 解析响应体为纯文本 return response.text(); }) .then(result => { // 此处打印的result就是服务端返回的hello console.log(result); }) .catch(err => { console.log(err); }) app.listen(6000);
附加说明
curl请求能直接看到返回内容,是因为curl默认会自动读取并打印响应体内容,相当于自动完成了解析响应体的步骤,和你代码中的逻辑差异就在这里。
内容的提问来源于stack exchange,提问作者joe sharkey
相关产品推荐
相关产品推荐

