【问题标题】:AWS serverless deployment with webpack built modules failing带有 webpack 构建模块的 AWS 无服务器部署失败
【发布时间】:2019-08-07 12:28:37
【问题描述】:

我创建了一个无服务器 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 上使用无服务器正确部署我的项目?

【问题讨论】:

    标签: amazon-web-services webpack aws-lambda serverless-framework aws-serverless


    【解决方案1】:

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

    您可以使用 WebPack 插件显式包含您的 env 文件,例如 this one

    【讨论】:

    • 感谢您的提醒。我认为 webpack 会自动在我的 js 中捆绑引用的文件,但事实证明,当我将这些环境变量移动到无服务器配置时它起作用了,而构建的 zip 文件中缺少的帮助程序和模型文件似乎包含在我的控制器本身中
    猜你喜欢
    • 2019-11-06
    • 2019-12-24
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 2021-04-27
    • 2018-12-08
    • 2016-02-10
    • 1970-01-01
    相关资源
    最近更新 更多