[英]How can I access the text response of a fetch from client JS to fastify?
我有一个 fastify node.js 应用程序,我能够在它返回到调用浏览器 JS 之前看到承诺的文本结果。 当该承诺返回到浏览器 JS 时,我只能从承诺文本中获得空字符串。 我假设这些承诺没有被链接,这是一个没有其他承诺的新承诺。 如果这是正确的,我将如何访问内部承诺结果?
我已经在 fastify 应用程序中的模块之间传递了承诺,在任何时候都可以毫无问题地获得结果,我只是不明白我在这一点上做错了什么。 这些是我在通话双方尝试做的事情的基础知识:
// 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.