Javascript 如何访问从客户端JS提取到fastify的文本响应?
我有一个fastify node.js应用程序,我可以在承诺返回到调用浏览器js之前看到它的文本结果。当这个承诺返回到浏览器JS时,我只从承诺文本中得到一个空字符串。我假设这些承诺没有被束缚,这是一个没有其他承诺内容的新承诺。如果这是正确的,我将如何访问内部承诺结果 我已经在禁食应用程序中的模块之间通过了承诺,在任何时候都没有问题地得到结果,我只是不明白我在这一点上做了什么。以下是我在通话双方尝试做的基本内容: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
// 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…
在调用端应该可以正常工作?它的传递没有错误,但是在客户端调用上输出结果
和文本
是未定义的。节点在返回之前输出正确的信息。你能签入你的客户吗?太棒了,这正是问题所在!非常感谢。