首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swagger在尝试提取NodeJS中的资源时发送此错误: TypeError: NetworkError

Swagger在尝试提取NodeJS中的资源时发送此错误: TypeError: NetworkError
EN

Stack Overflow用户
提问于 2019-12-29 15:59:26
回答 1查看 7.6K关注 0票数 2

我运行Swagger来测试我用NodeJS和Fastify框架编写的应用程序接口。一切正常,当我在Postman中测试我的API时,一切都正常。但在Swagger中,我得到了这个错误:

代码语言:javascript
复制
TypeError: NetworkError when attempting to fetch resource.

在我搜索它之后,我发现我应该在我的代码中添加found。所以我用server.js写了这段代码:

代码语言:javascript
复制
fastify.addHook('onSend', (request, reply, payload, next) => {
  reply.header('Access-Control-Allow-Origin', '*')
  reply.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Access-Control-Allow-Origin, Cache-Control')
  reply.header('Access-Control-Allow-Methods', 'GET')
  Object.assign(reply.res, {
    payload: JSON.parse(payload),
    input: request.body || request.query,
  })
  next()
})

但是Swagger不能与addHook一起工作!我也不知道原因!当我将这段代码添加到我的代码中并转到这个url: localhost:3002/documentation来查看我的Swagger API时,我得到这个错误:

代码语言:javascript
复制
SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse ()

但是当我在代码中注释addHook时,Swagger是正常的,之后我得到了第一个错误!如果没有addHook,我怎么才能在我的代码中添加CORN?

EN

回答 1

Stack Overflow用户

发布于 2020-02-05 21:38:38

问题是,onSend钩子对同一上下文中的每个请求都运行。

因此,当客户端请求http://localhost:3000/docs时,返回的payloadtext/html文本,而不是JSON。检查fastify's lifecycle

因此,对文本或空响应运行JSON.parse(payload)将导致您得到的错误。

我应该有更多的信息来建议一个更好的方法,因为fastify-cors应该可以工作(它向响应添加了与您添加的相同的头),所以我会更改钩子代码:

代码语言:javascript
复制
fastify.addHook('onSend', (request, reply, payload, next) => {
  reply.header('Access-Control-Allow-Origin', '*')
  reply.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Access-Control-Allow-Origin, Cache-Control')
  reply.header('Access-Control-Allow-Methods', 'GET')

  let parsed
  if (payload) {
    try { // try to parse
      parsed = JSON.parse(payload)
    } catch (error) {
      // pa
    }
  }
  Object.assign(reply.res, {
    payload: parsed,
    input: request.body || request.query
  })
  next()
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59517737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档