使用 webpack 构建模块的 AWS 无服务器部署失败

AWS serverless deployment with webpack built modules failing

我创建了一个无服务器 aws-nodejs 模板项目,并在其中按以下方式组织了我的 js 文件 -

project:root -
   | .env
   | src -
         | controllers -
            <js_files_here> 
         | helpers - 
            <js_files_here>
         | models -
            <js_files_here>
         | routes -
            <yml_files_here>

这是我的 serverless.yml -

service: rest-api

provider:
  name: aws
  runtime: nodejs8.10
  stage: dev
  region: ap-south-1

plugins:
  - serverless-bundle
  - serverless-offline

functions:
  ${file(./src/routes/index.yml)}

并且在我尝试使用的一个 js 文件中 -

require('dotenv').config({ path: './.env' });

所以我正在尝试从此 .env 文件加载一些环境变量。现在,当我使用 - sls offline start 在本地测试这些文件时,它按预期工作 但是当我将它们部署到 aws 帐户时,api 会按预期停止工作,而且当我在 .serverless 目录中看到包 (rest-api.zip) 文件时,我没有看到 src 目录中打包的所有文件那里。

那么,如何解决这个问题并在 aws 上使用无服务器正确部署我的项目?

您的问题是,由于 dotenv 动态导入,WebPack 在尝试查找您需要的所有文件时未能将文件包含在其传递闭包中。

您可以使用 WebPack 插件明确包含您的 env 文件,例如 this one.