使用 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.
我创建了一个无服务器 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.