Javascript 如何访问从客户端JS提取到fastify的文本响应?

Javascript 如何访问从客户端JS提取到fastify的文本响应?,javascript,node.js,fetch,fastify,Javascript,Node.js,Fetch,Fastify,我有一个fastify node.js应用程序,我可以在承诺返回到调用浏览器js之前看到它的文本结果。当这个承诺返回到浏览器JS时,我只从承诺文本中得到一个空字符串。我假设这些承诺没有被束缚,这是一个没有其他承诺内容的新承诺。如果这是正确的,我将如何访问内部承诺结果 我已经在禁食应用程序中的模块之间通过了承诺,在任何时候都没有问题地得到结果,我只是不明白我在这一点上做了什么。以下是我在通话双方尝试做的基本内容: // node.js fastify.get('/promise', async f

我有一个fastify node.js应用程序,我可以在承诺返回到调用浏览器js之前看到它的文本结果。当这个承诺返回到浏览器JS时,我只从承诺文本中得到一个空字符串。我假设这些承诺没有被束缚,这是一个没有其他承诺内容的新承诺。如果这是正确的,我将如何访问内部承诺结果

我已经在禁食应用程序中的模块之间通过了承诺,在任何时候都没有问题地得到结果,我只是不明白我在这一点上做了什么。以下是我在通话双方尝试做的基本内容:

// node.js
fastify.get('/promise', async function(request, reply) {
    var results = await someFunction(request)
    console.log(await results.text()) // this displays results as XML
    return results
})

// call to fastify app from browser JS
async function getPromise(params) {
    var response = await fetch("http://localhost:3000/promise" + params, { mode: 'no-cors' })
    console.log(await response.text()) // this is empty
}

{mode:'no cors'}
请求响应,因为它是

不透明过滤响应是类型为“不透明”的过滤响应,URL列表为空列表,状态为0,状态消息为空字节序列,标题列表为空,正文为空

这里有一个完整的例子:

'use strict'

const fetch = require('node-fetch')
const fastify = require('fastify')({ logger: true })
const fastifyCors = require('fastify-cors')

fastify.register(fastifyCors, {
  credentials: true,
  origin: '*'
})

fastify.get('/promise', async function (request, reply) {
  const results = await fetch('http://www.mocky.io/v2/5e738e46300000fd9b2e66ae')
  return results.text()
})

fastify.listen(3000)
在浏览器中:

await fetch("http://localhost:3000/promise").then(res => res.text())

它将打印
HELLO WORLD

您应该返回
results.text()
不仅仅是
results
我尝试返回两个
return{results,text}
,其中两个变量都保存在
wait
中。在客户端,当我这样做时,这两个值都是未定义的。这些承诺难道不是连锁的吗?我的理解是,将承诺传递下去是有效的,但可能我弄错了。你是对的,似乎奇怪的是
const text=wait results.text()
不起作用你确定没有任何错误吗?像cors或其他?在浏览器或fastify日志中都没有看到错误。我有我传递的文本的那一行。我假设
让{results,text}=wait-fetch…
在调用端应该可以正常工作?它的传递没有错误,但是在客户端调用上输出
结果
文本
是未定义的。节点在返回之前输出正确的信息。你能签入你的客户吗?太棒了,这正是问题所在!非常感谢。