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

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

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

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

包含项目源的根目录中的 package.json 文件来指定依赖项包并提供启动命令。如果 package.json 文件存在,Elastic Beanstalk 将运行 npm install 以安装依赖项。它还使用 start 命令来启动您的应用程序。有关 package.json 文件的更多信息,请参阅 Node.js 网站上的 package.json 指南

使用 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 文件中的 engines 关键字指定您希望应用程序使用的 Node.js 版本。您还可以使用 npm 表示法指定版本范围。有关版本范围的语法的更多信息,请参阅 Node.js 网站上的使用 npm 的语义版本控制。Node.js package.json 文件中的 engines 关键字取代 aws:elasticbeanstalk:container:nodejs 命名空间中的原有 NodeVersion 选项。

package.json – 单个 Node.js 版本

{ ... "engines": { "node" : "14.16.0" } }

package.json – Node.js 版本范围

{ ... "engines": { "node" : ">=10 <11" } }

当指示版本范围时,Elastic Beanstalk 会安装该平台在该范围内可用的最新 Node.js 版本。在此示例中,范围指示版本必须大于或等于版本 10,但小于版本 11。因此,Elastic Beanstalk 安装了最新的 Node.js 版本 10.x.y,该版本在支持的平台上可用。

请注意,您只能指定与平台分支对应的 Node.js 版本。例如,如果您使用的是 Node.js 14 平台分支,则只能指定 14.x.y Node.js 版本。您可以使用 npm 支持的版本范围选项来提高灵活度。有关每个平台分支的有效 Node.js 版本,请参阅 Amazon Elastic Beanstalk 平台指南中的 Node.js

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

注意

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

发生此情况时,尝试更新到不支持所配置的 Node.js 版本的新平台版本会失败。为避免需要创建新环境,请将 package.json 中的 Node.js 版本设置更改为旧平台版本和新平台版本都支持的 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 文件中指定的依赖项。