gpt4 book ai didi

javascript - 使用 Netlify 函数加载本地文件

转载 作者:行者123 更新时间:2023-12-05 05:10:17 27 4
gpt4 key购买 nike

我编写了一个脚本,它使用 Netlify 的 Functions 功能 (https://functions.netlify.com/) 获取 JSON 文件并将其输出到 API 端点。在大多数情况下,这可以顺利进行,但是,我的一个端点有很多文本,为了便于编辑,我将大文本 block 拆分为 Markdown 文件,然后将其加载到端点中。

在本地,这完美地工作,但在部署时我收到一个控制台错误,提示 Failed to load resource: the server responded with a status of 502 ()。我认为这是因为我使用了 Node fs 方法,而 Netlify 不允许这样做,但是,我找不到任何关于此的信息。

我用过的代码在这里:

const marked = require('marked')
const clone = require('lodash').cloneDeep
const fs = require('fs')
const resolve = require('path').resolve
const data = require('../data/json/segments.json')

// Clone the object
const mutatedData = clone(data)

// Mutate the cloned object
mutatedData.map(item => {
if (item.content) {
const file = fs.readFileSync(resolve(`./src/data/markdown/${item.content}`), 'utf-8')
item.content = marked(file)
}
})

exports.handler = function(event, context, callback) {
callback(null, {
statusCode: 200,
body: JSON.stringify({data: mutatedData})
});
}

我也尝试过替换

  const file = fs.readFileSync(resolve(`./src/data/markdown/${item.content}`), 'utf-8')

  const file = require(`../data/markdown/${item.content}`)

但这会提示加载程序,我想尽可能避免添加 webpack 配置,因为我正在使用 create-react-app,此外,我怀疑它是否会有所帮助,因为我会在构建时间后仍然可以访问文件系统。

有没有其他人遇到过这个问题?

最佳答案

在写这个答案的时候(2019年9月),Netlify好像没有上传辅助文件到AWS Lambda,好像只会上传handler导出的脚本。即使您有多个脚本导出多个处理程序,Netlify 似乎会将它们上传到隔离的“容器”(不同的 AWS 实例)中,这意味着脚本将无法在相对路径中看到彼此。免责声明:我只使用免费帐户进行了测试,可能存在我不知道的设置。

解决方法:

对于辅助脚本,将它们制作成NPM 包,添加到package.json 并在您的主脚本中require。它们将被安装并可供使用。

对于静态文件,您可以像在拥有 AWS Lambda 之前一样将它们托管在 Netlify 上,并发出 http 请求以在主脚本中获取文件。

关于javascript - 使用 Netlify 函数加载本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56740810/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com