【问题标题】:Gatsby.js - proxy to express serverGatsby.js - 表达服务器的代理
【发布时间】:2019-04-12 19:22:04
【问题描述】:

我想为我的简单快递服务器设置代理。我添加了 cors 策略,当我像这样调用 api 时一切正常:

fetch('http://localhost:3000/tasks')

但是当我像这样在 gatsby.config.js 中设置代理时:

proxy: {
    prefix: '/',
    url: 'http://localhost:3000'
  },

然后调用:

fetch('/tasks)

我收到此错误:

未处理的拒绝 (SyntaxError): 意外的标记

如何在 gatsby.js 中正确设置代理??

【问题讨论】:

    标签: javascript json gatsby


    【解决方案1】:

    我认为您不能使用 root 作为代理。在 gatsby develop 中,代理的处理方式类似于 this:

    app.use(`${prefix}/*`, (req, res) => { ... }
    

    因此,如果 prefix 设置为 /,它将变为 //*,这将不起作用。即使它确实像/* 那样工作,所有来自 gatsby 服务器的路由都将被重定向到代理服务器,因为代理比其他路由具有更高的先例,gatsby 根本没有任何机会服务任何页面。

    prefix 必须是以斜线开头的单词,即/api

    proxy: {
      prefix: '/api',
      url: 'http://localhost:3000'
    },
    

    然后就可以使用了:

    fetch(`/api/tasks`)
    

    【讨论】:

    • 你刷新gatsby develop了吗?有什么新的错误信息吗?
    • 不,仍然是同样的错误,API 仅适用于完整路径和邮递员...当我在浏览器中编写时:localhost:3000/api/tasks 它运行良好,但代理仍然没有吨。我遇到了同样的错误
    • 是的,它有效...问题是 API 返回了空数组...当数组不为空时,您的代码正在运行...非常感谢!
    • @Freestyle09 啊,伙计,我知道这会是来自开发服务器的东西,很高兴你解决了!当你再次遇到问题时,加入gatsby.dev/discord——那里有很多人可以帮助你
    • 是的,这不起作用很奇怪,我从朋友那里得到了后端代码,但我没有检查,因为他向我保证一切正常 :) 感谢邀请!
    【解决方案2】:

    这应该进入评论,但格式不好,所以我发布作为答案。我不确定确切的原因是什么,但有一些想法可以帮助您调试。

    1. 您可能会收到带有内容类型标头的 HTML 响应,表明它是 JSON。通过检查浏览器 devtools 中的网络面板来验证是否是这种情况。
    2. 确保请求确实到达了您的快速服务器。如果 1. 为真,那么很有可能它没有到达 express 服务器,HTML 来自 Gatsby 的开发服务器。
    3. 如果以上两点都成立,那么也许调试 Gatsby 源代码以找出它决定处理请求而不是转发请求的原因。 Derek Nguyen 指出了location。它也是一个快速服务器,所以对你来说应该没问题。

    【讨论】:

    • @Freestyle09 是的,我知道。问题是,到底怎么不工作?
    • @Freestyle09 尝试回答这些问题(上面已经给出的方法):  1. 当它“不起作用”时,响应究竟是什么样的? 2. 您是否 100% 确定该请求会到达您的快递服务器?
    • 实际上是可靠的答案。当我给出答案时,我已经使用了此功能并再次对其进行了测试,并且它始终有效。 @Freestyle09 你能用新的代理设置更新你的答案吗?为了完整起见,我们需要知道代理是否真的在访问您的本地后端,您可以通过将请求记录到本地服务器来做到这一点。
    • 它仅适用于完整的 url 地址:localhost:3000/tasks ...当我尝试设置代理时,我收到了上面的错误。 /api/tasks 或仅 /tasks 上的相同错误...未处理的拒绝...
    • @Freestyle09 是的,很高兴知道这一点。不要重复自己,做某事。想办法。
    猜你喜欢
    • 2010-12-18
    • 2021-05-13
    • 2019-04-09
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    相关资源
    最近更新 更多