繁体   English   中英

如何访问从客户端 JS 获取的文本响应以进行快速化?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM