测试netlify函数和Gatsbyjs 2时ECONNRESET

时间:2018-07-31 05:16:12

标签: node.js webpack gatsby netlify http-proxy-middleware

我正在尝试使用netlify-lambda在本地测试Netlify的lambda函数,但是无法使该代理与Gatsbyjs一起使用。我一直在控制台中收到此消息:

[HPM] Rewriting path from "/.netlify/functions/add-subscriber" to "/add-subscriber"
[HPM] GET /.netlify/functions/add-subscriber ~> http://localhost:9000
[HPM] Error occurred while trying to proxy request /add-subscriber from localhost:8000 to http://localhost:9000 (ECONNRESET) (https://nodejs.org/api/errors.html#errors_common_system_errors)

这就是我在请求中得到的

  

尝试代理到:localhost:8000 / add-subscriber

时发生错误

这就是我的gatsby-config.js文件中的内容

developMiddleware: app => {
  app.use(
    "/.netlify/functions",
    proxy({
      target: "http://localhost:9000",
      pathRewrite: {
        "^/\\.netlify/functions": ""
      },
      logLevel: "debug"
    })
  )
}

这是我发出请求的地方

onSubmit(values) {
  fetch('/.netlify/functions/add-subscriber')
    .then(resp => resp.json())
    .then(resp => console.log(resp))
    .catch(e => {
      console.error(e)
    })
}

我尝试了以下几个示例,但没有一个对我有用。我还关闭了可能正在使用端口的所有程序。从浏览器测试URL(http://localhost:9000/add-subscriber)正常。直接获取URL也可以正常工作。可能是什么问题?

2 个答案:

答案 0 :(得分:0)

我注意到的第一件事是您的pathRewrite与文档中的示例不匹配,您正在使用"^/\\.netlify/functions",而文档使用"/.netlify/functions/"。解决方法可以这么简单吗?

如果通过curl或直接在浏览器中加载http://localhost:8000/.netlify/functions/add-subscriber,会发生什么情况?那应该告诉您配置是否正常工作。

答案 1 :(得分:0)

切换到target: 'http://[::1]:9000',帮了我大忙