外部依赖项
外部依赖是一个库,其中包含您自己无法实现或不想实现的代码。例如,您可以使用官方库作为外部服务或者数据结构或算法的自定义实现。
Atlas App Services 自动转换依赖项,并且还支持内置 Node.js 模块。
注意
创建您自己的模块
虽然大多数npm模块由第三方编写,但您也可以创建并发布自己的npm模块来容纳特定于您的应用程序的逻辑。 您可以将模块提供给 Node.js 社区,也可以保留以供私人使用。 有关详情,请查看 npm 的有关 向注册表提供软件包 的指南 。
添加外部软件包
要导入和使用外部依赖,首先需要将依赖项添加到应用程序中。您可以按名称添加软件包,也可以上传依赖目录。
重要
覆盖现有依赖项
您一次只能使用一种方法来指定应用可以使用的外部包。用于指定依赖项的最新方法是数据源,并且会覆盖之前的规范。
例如,通过用户界面按名称添加的软件包会覆盖之前添加的同一软件包的所有副本,包括上传的依赖项目录中的副本。
按名称和版本添加软件包
可以按名称将 npm 注册表中的软件包添加到相关应用中。可以添加特定版本或使用最新版本。
上传依赖项目录
您可以将压缩的 node_modules
软件包目录上传到应用。压缩的依赖目录不得超过 15MB。
在本地安装外部依赖
要上传外部依赖项,首先需要一个本地 node_modules
文件夹,其中包含至少一个 Node.js 包。可以使用以下代码片段在本地安装要上传的依赖项:
npm install <package name>
如果 node_modules
文件夹尚不存在,则此命令会自动创建它。
注意
其他安装方法
您还可以配置 package.json
并运行 npm install
命令来安装 package.json
中列出的所有软件包(及其依赖项)。
要了解有关 npm 和 node_modules
的更多信息,请查阅 npm 文档。
上传依赖存档
创建包含依赖项的存档后,您可以使用 App Services 用户界面或 App Services CLI 上传依赖项存档:
从左侧导航菜单中选择 Functions。
选择 Dependencies 标签页。
单击 Upload 按钮。
在文件选取器中,选择您刚刚创建的
node_modules.tar.gz
存档,然后点击 Open(打开)。App Services 会自动上传存档文件,这可能需要几分钟时间,具体取决于您的互联网连接速度和依赖项存档的大小。无论操作成功还是失败,App Services 都会显示一个横幅,指示操作成功或失败。如果成功,Dependencies 标签页将显示您在依赖项存档中包含的依赖项列表。如果已启用草稿,还需要点击 Review & Deploy 以应用这些更改。如果已禁用草稿,则更改将在 5 到 60 秒内生效,具体取决于依赖项存档的大小。
将
node_modules
存档添加到/functions
目录:mv node_modules.tar.gz ./myapp/functions 使用
--include-node-modules
选项推送应用程序:appservices push --include-node-modules
在函数中导入软件包
可以导入已添加到应用中的内置模块和外部软件包,然后在函数中使用它们。要导入一个软件包,请使用函数体中的包名称来调用 require()
。
重要
从哪里导入模块?
Node.js 项目通常会在每个文件的全局范围内放置 require()
调用,但 App Services 不支持此模式。必须 将 App Services require()
调用置于函数作用域内。
导入完整模块
exports = () => { const R = require("ramda"); return R.map(x => x*2, [1,2,3]); }
导入模块子文件夹
exports = function(arg){ const cloneDeep = require("lodash/cloneDeep"); var original = { name: "Deep" }; var copy = cloneDeep(original); copy.name = "John"; console.log(`original: ${original.name}`); console.log(`copy: ${copy.name}`); return (original != copy); };