如何在无服务器框架上包含静态文件?

时间:2018-02-01 12:35:02

标签: node.js amazon-web-services lambda aws-lambda serverless-framework

我正在使用无服务器框架创建NodeJS服务来验证提要,因此我向服务添加了一个模式文件(.json),但我无法使其工作。 它似乎没有包含在包中。 Lambda找不到该文件。

首先我只是运行sls包并检查zip内容但文件不存在。 我还尝试将文件包含在:

package:
  include:
    - libs/schemas/schema.json

但仍无效。

如何确保包中包含静态文件,并且可以在lambda函数中读取?

2 个答案:

答案 0 :(得分:3)

这取决于您实际尝试加载文件的方式。

您是使用fs.readFile还是fs.readFileSync加载的? 在这种情况下,无服务器并不知道您将需要它。如果您为无服务器添加提示以将该文件包含在捆绑包中,请确保您知道它相对于当前工作目录或__dirname的位置。

您是否使用require()加载? (您知道可以使用require()加载JSON文件吗?)在这种情况下,Serverless应该知道您需要它,但是您仍然需要确保路径正确。

如果所有其他方法都失败了,那么你总是可以使用肮脏的黑客攻击。 例如,如果您有一个文件' x.json'包含:

{
  "a": 1,
  "b": 2
}

然后您可以将其更改为包含以下内容的x.js文件:

module.exports = {
  "a": 1,
  "b": 2
};

你可以像任何其他.js文件一样加载,但它是一个黑客。

答案 1 :(得分:0)

根据我发现的内容,您可以通过多种方式执行此操作: