配置您的应用程序的依赖项 - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配置您的应用程序的依赖项

您的应用程序可能有某些 Node.js 模块的依赖项,例如您在 require() 语句中指定的项。您可以使用 package.json 文件指定这些依赖项。或者,您也可以将应用程序的依赖项包含在源包中并将它们与应用程序一起部署。本页讨论了这两种方式。

使用程序包 .json 文件指定 Node.js 依赖项

在项目源的根目录中包含一个 package.json 文件以指定依赖关系包(使用 dependencies 关键字)并提供 start 命令(使用 scripts 关键字)。使用 scripts 关键字可以替换 aws:elasticbeanstalk:container:nodejs 命名空间中的旧 NodeCommand 选项。

例 package.json – Express

{ "name": "my-app", "version": "0.0.1", "private": true, "dependencies": { "ejs": "latest", "aws-sdk": "latest", "express": "latest", "body-parser": "latest" }, "scripts": { "start": "node app.js" } }

如果 package.json 文件存在,Elastic Beanstalk 将运行 npm install 安装依赖项。它还使用 start 命令来启动您的应用程序。

默认情况下,Elastic Beanstalk 在生产模式 (npm install --production) 下安装依赖项。如果您希望在环境实例上安装开发依赖项,请将 NPM_USE_PRODUCTION 环境属性设置为 false

您还可以使用 engines 关键字在 package.json 文件指定希望应用程序使用的 Node.js 版本,如以下示例所示。此功能将替换 aws:elasticbeanstalk:container:nodejs 命名空间中的旧 NodeVersion 选项。请注意,您只能指定与平台分支对应的 Node.js 版本。例如,如果您使用的是 Node.js 12 平台分支,则只能指定 12.x.y Node.js 版本。有关每个平台分支的有效 Node.js 版本,请参阅 AWS Elastic Beanstalk 平台 指南中的 Node.js

例 package.json – Node.js 版本

{ ... "engines": { "node" : "12.16.1" } }
注意

如果对您正在使用的 Node.js 版本的支持已从平台中移除,则您必须先更改或移除 Node.js 版本设置再进行平台更新。当在一个或多个 Node.js 版本中识别到安全漏洞时,可能会发生这种情况。

发生此情况时,尝试更新到不支持所配置的 Node.js 版本的新平台版本会失败。为避免需要创建新环境,请将 package.json 中的 Node.js 版本设置更改为旧平台版本和新平台版本都支持的 Node.js 版本,或删除设置,然后部署新的源包。然后再执行平台更新。

在 node_modules 目录中包括 Node.js 依赖项

要将依赖项程序包与应用程序代码一起部署到环境实例,请将它们包括在项目源根目录下名为 node_modules 的目录中。Node.js 在此目录中查找依赖项。有关详细信息,请参阅 Node.js 文档中的从 node_modules 文件夹加载

注意

node_modules 目录部署到 Amazon Linux 2 Node.js 平台版本时,Elastic Beanstalk 假定您提供了自己的依赖项程序包,并避免安装 package.json 文件中指定的依赖项。