簡體   English   中英

如何在無服務器框架中包含靜態文件?

[英]How to include static files on Serverless Framework?

我正在使用無服務器框架創建一個 NodeJS 服務來驗證提要,因此我向該服務添加了一個模式文件 (.json),但我無法使其工作。 它似乎不包含在包裝中。 Lambda 沒有找到該文件。

首先,我只運行 sls 包並檢查 zip 內容,但該文件不存在。 我還嘗試將文件包含在:

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

但仍然無法正常工作。

如何確保靜態文件包含在包中並且可以在 lambda 函數中讀取?

這取決於您實際嘗試加載文件的方式。

您是使用fs.readFile還是fs.readFileSync加載它? 在這種情況下,Serverless 不知道您將需要它。 如果您為無服務器添加提示以將該文件包含在包中,請確保您知道它相對於當前工作目錄或__dirname的位置。

你用require()加載它嗎? (你知道你可以使用require()來加載 JSON 文件嗎?)在這種情況下,Serverless 應該知道你需要它,但你仍然需要確保你得到了正確的路徑。

如果一切都失敗了,那么你總是可以使用骯臟的黑客。 例如,如果您有一個文件“x.json”,其中包含:

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

然后您可以將其更改為包含以下內容的x.js文件:

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

您可以像任何其他 .js 文件一樣加載,但這是一個 hack。

根據我的發現,您可以通過多種方式做到這一點:

對於那些在 2022 年努力尋找解決方案的人:使用 package.patterns 參數。 例子:

package:
  patterns:
    - libs/schemas/schema.json
    - !libs/schemas/schema-prod.json

( !前面的文件路徑不包括指定的模式)

文檔: https ://www.serverless.com/framework/docs/providers/aws/guide/packaging

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM