Docs 菜单
Docs 主页
/
MongoDB Atlas
/ / /

外部依赖项

在此页面上

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

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

Atlas会自动转换依赖项,并且还支持大多数内置Node.js 模块。

注意

创建您自己的模块

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

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

重要

覆盖现有依赖项

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

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

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

1
  1. 导航至 Triggers页面

    1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。

    2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

    3. 在侧边栏中,单击 Services 标题下的 Triggers

      会显示触发器页面。

  2. 选择要添加依赖项的trigger 。

  3. Edit Trigger 页面上, Go Function 部分并单击 Add Dependency

2
  1. Add Dependency模式窗口中,包含以下信息:

    字段
    说明
    定义包名称
    npm 包的名称。
    软件包版本
    可选。 要使用的依赖项的特定版本。 默认, Atlas函数使用可用的最新版本。
  2. 单击Add添加包。

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

3

成功添加依赖项后,您将在Triggers主页的Dependencies标签页的依赖项列表中看到它。

您可以将压缩的 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模块,您需要将它们包到存档中,以便上传到Atlas。 Atlas支持.tar.tar.gz.tgz.zip存档格式。

创建包含 node_modules 文件夹的存档:

tar -czf node_modules.tar.gz node_modules/
3

创建包含依赖项的存档后,可以使用Atlas用户界面上传依赖项存档:

  1. 导航至Triggers页面

    1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。

    2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

    3. 在侧边栏中,单击 Services 标题下的 Triggers

      会显示触发器页面。

  2. 选择 Dependencies 标签页。

  3. 单击 Upload Folder(连接)。

  4. 在模式窗口中,单击Upload Folder ,然后选择您刚刚创建的node_modules.tar.gz存档。

  5. 单击Add 。 Atlas上传存档文件,这可能需要几分钟时间,具体取决于互联网连接速度和依赖项存档的大小。

  6. Atlas会显示一个横幅,指示操作成功或失败。 如果成功, Dependencies标签页将显示您在依赖项存档中包含的依赖项列表。

    • 如果已启用草稿,还必须单击Review & Deploy来应用这些更改。

    • 如果已禁用草稿,则更改将在5到60秒内生效,具体取决于依赖项存档的大小。

可以导入已添加到应用中的内置模块和外部软件包,然后在函数中使用它们。要导入一个软件包,请使用函数体中的包名称来调用 require()

重要

从哪里导入模块?

Node.js 项目通常会在每个文件的全局范围内放置require()调用,但Atlas不支持此模式。 必须在函数作用域内调用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);
};

后退

Global Modules