Docs 菜单
Docs 主页
/ /
Atlas App Services
/

外部依赖项

在此页面上

  • 添加外部软件包
  • 按名称和版本添加软件包
  • 上传依赖项目录
  • 在函数中导入软件包
  • 导入完整模块
  • 导入模块子文件夹

外部依赖是一个库,其中包含您自己无法实现或不想实现的代码。例如,您可以使用官方库作为外部服务或者数据结构或算法的自定义实现。

Atlas App Services 自动转换依赖项,并且还支持内置 Node.js 模块。

注意

创建您自己的模块

尽管大多数 npm 模块由第三方编写,但您也可以创建并发布自己的 npm 模块来容纳特定于应用程序的逻辑。您可以将模块提供给 Node.js 社区,也可以保留以供私人使用。有关详情,请查看 npm 的有关 向注册表提供软件包 的指南

要导入和使用外部依赖,首先需要将依赖项添加到应用程序中。您可以按名称添加软件包,也可以上传依赖目录。

重要

覆盖现有依赖项

您一次只能使用一种方法来指定应用可以使用的外部包。用于指定依赖项的最新方法是数据源,并且会覆盖之前的规范。

例如,通过用户界面按名称添加的软件包会覆盖之前添加的同一软件包的所有副本,包括上传的依赖项目录中的副本。

可以按名称将 npm 注册表中的软件包添加到相关应用中。可以添加特定版本或使用最新版本。

1
  1. 从左侧导航菜单中选择 Functions

  2. 选择 Dependencies 标签页。

  3. 单击 Add Dependency 按钮。

2

在上一步操作中弹出的 Add Dependency 模式窗口中,包含以下信息:

字段
说明
定义包名称
npm 包的名称。
软件包版本
可选。要使用的依赖项的特定版本。默认情况下,App Services 使用可用的最新版本。

点击 Add 按钮开始添加软件包。

您可以在窗口底部的进度跟踪器中跟踪添加依赖项的状态。进度跟踪器提供一条消息,让您知道这个包是成功还是失败。失败消息包含有关无法添加包的原因的其他信息。

如果已启用草稿,则还需要点击 Review & Deploy 以应用这些更改。

3

如果 App Services 成功添加依赖项,则可在 Dependencies 标签页的依赖项列表中查看。

1

使用以下命令将应用拉取到设备:

appservices pull
2
  1. 在应用的/functions目录中创建 package.json 。为此,您可以复制现有的package.json文件或运行npm init并按照提示操作。

  2. 通过运行npm install <dependency-name>添加依赖项。

3
  1. Go应用的根目录:

    cd path/to/MyRealmApp
  2. 推送应用程序的最新版本,其中包含package.json中的所有依赖项:

    appservices push --include-package-json
  3. 按照 CLI 提示,确认您要在操作中包含依赖项。 CLI 将开始向您的应用添加依赖项。

4

完成添加依赖项后,CLI 会告诉您是否已成功添加所有包。

如果安装过程中出现任何故障,则不会安装任何依赖项。 从package.json文件中删除失败的依赖项,然后重试。

1

启用 Github 自动部署,以便每当您将配置更新推送到 Github 上的指定分支时,都可以重新部署您的应用。

2

使用以下命令将应用拉取到设备:

appservices pull
3
  1. 在应用的/functions目录中创建一个package.json 。为此,您可以复制现有的package.json文件或运行npm init并按照提示操作。

  2. 通过运行npm install <dependency-name>添加依赖项。

4

Git 使用如下命令将应用的最新版本以及package.json中的所有依赖项推送到 Github:

git push origin main
5

推送提交后, Atlas App Services Github应用会自动部署更新的应用配置。 您可以从Atlas App Services用户界面的 Deployment 屏幕检查部署状态,并确认所有包均已成功添加。

如果在部署过程中出现任何故障,则不会安装任何依赖项。从package.json文件中删除失败的依赖项,然后重试。

您可以将压缩的 node_modules 软件包目录上传到应用。压缩的依赖目录不得超过 15MB。

1

要上传外部依赖项,首先需要一个本地 node_modules 文件夹,其中包含至少一个 Node.js 包。可以使用以下代码片段在本地安装要上传的依赖项:

npm install <package name>

如果 node_modules 文件夹尚不存在,则此命令会自动创建它。

注意

其他安装方法

您还可以配置 package.json 并运行 npm install 命令来安装 package.json 中列出的所有软件包(及其依赖项)。

要了解有关 npm 和 node_modules 的更多信息,请查阅 npm 文档

2

现在您已下载所有 npm 模块,您需要将其打包到存档中,以便可以将它们上传到 App Services。创建包含 node_modules 文件夹的存档:

tar -czf node_modules.tar.gz node_modules/

注意

支持的存档格式

App Services 支持 .tar.tar.gz.tgz.zip 存档格式。

3

创建包含依赖项的存档后,您可以使用 App Services 用户界面或 App Services CLI 上传依赖项存档:

  1. 从左侧导航菜单中选择 Functions

  2. 选择 Dependencies 标签页。

  3. 单击 Upload 按钮。

  4. 在文件选取器中,选择您刚刚创建的 node_modules.tar.gz 存档,然后点击 Open(打开)。App Services 会自动上传存档文件,这可能需要几分钟时间,具体取决于您的互联网连接速度和依赖项存档的大小。

  5. 无论操作成功还是失败,App Services 都会显示一个横幅,指示操作成功或失败。如果成功,Dependencies 标签页将显示您在依赖项存档中包含的依赖项列表。如果已启用草稿,还需要点击 Review & Deploy 以应用这些更改。如果已禁用草稿,则更改将在 5 到 60 秒内生效,具体取决于依赖项存档的大小。

  1. node_modules存档添加到/functions目录:

    mv node_modules.tar.gz ./myapp/functions
  2. 使用--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);
};

后退

全局模块

来年

测试函数