用于Netlify功能的Sapper汇总代理配置

问题描述

我正在使用Sapper Rollup template,但不知道如何将/.netlify/functions代理到localhost:9000。我已经在setupProxy.js文件中尝试过http-proxy-middleware,但是由于Sapper开发服务器似乎无法使用汇总配置,因此我不确定在哪里引用该文件

我在/src/functions/get-code.js中有一个函数,并且正在使用Netlify lambda对其进行测试:

package.json

...
"scripts": {
  "dev": "sapper dev","lambda:dev": "netlify-lambda serve src/functions",...

netlify.toml

[build]
  command = "npm run build"
  functions = "lambda"

我可以在https://localhost:9000/get-code上测试我的功能,并且工作正常。但是,在我的应用中,文件utilities.js中有一个函数正在尝试向/.netlify/functions/get-code.

发出请求
export const getCode = (obj) => {
  return axios
    .post('.netlify/functions/get-code',JSON.stringify(obj))
    .then((response) => {
      return response.data
    })
    .catch(function (error) {
      console.error(error)
      return null
    })
}

当我运行我的应用(npm run dev)并调用函数时,由于它试图调用ECONNREFUSED,因此会导致http:.netlify/functions/get-code错误

解决方法

我试图在 Eleventy 项目中做同样的事情,直到我意识到我没有必要这样做。与其使用 netlify-lambda 并尝试代理到端口 9000,不如使用 Netlify Dev

安装 Netlify CLI:

npm install netlify-cli -g

然后从您的项目文件夹运行 Netlify Dev:

netlify dev

它会启动您的应用并处理您对 /.netlify/functions/get-code 的 http 请求,因此您可以避免代理问题以及 CORS 问题。