yab*_*une 8 lambda amazon-web-services node.js aws-lambda serverless-framework
我正在创建一个带有无服务器框架的 NodeJS 服务来验证提要,所以我向该服务添加了一个架构文件 (.json),但我无法让它工作。它似乎没有包含在包中。Lambda 找不到该文件。
首先,我只是运行 sls 包并检查 zip 内容,但该文件不存在。我还尝试将文件包含在:
package:
include:
- libs/schemas/schema.json
Run Code Online (Sandbox Code Playgroud)
但仍然不起作用。
如何确保静态文件包含在包中并且可以在 lambda 函数中读取?
小智 5
对于那些在 2022 年努力寻找解决方案的人:使用 package.patterns 参数。例子:
package:
patterns:
- libs/schemas/schema.json
- !libs/schemas/schema-prod.json
Run Code Online (Sandbox Code Playgroud)
(!文件路径前面不包括指定的模式)
文档: https: //www.serverless.com/framework/docs/providers/aws/guide/packaging
这取决于您实际尝试加载文件的方式。
你用 or 加载它fs.readFile吗fs.readFileSync?在这种情况下,无服务器不知道您将需要它。如果您添加无服务器提示以将该文件包含在捆绑包中,请确保您知道它相对于当前工作目录或__dirname.
你正在加载它吗require()?(您知道可以用来require()加载 JSON 文件吗?)在这种情况下,Serverless 应该知道您需要它,但您仍然需要确保路径正确。
如果一切都失败了,那么你总是可以使用肮脏的黑客。例如,如果您有一个文件“x.json”,其中包含:
{
"a": 1,
"b": 2
}
Run Code Online (Sandbox Code Playgroud)
然后您可以将其更改为x.js包含以下内容的文件:
module.exports = {
"a": 1,
"b": 2
};
Run Code Online (Sandbox Code Playgroud)
您可以像任何其他 .js 文件一样加载它,但它是一个 hack。
| 归档时间: |
|
| 查看次数: |
4441 次 |
| 最近记录: |