外部依赖是一个库,其中包含您自己无法实现或不想实现的代码。例如,您可以使用官方库作为外部服务或者数据结构或算法的自定义实现。
Atlas会自动转换依赖项,并且还支持大多数内置Node.js 模块。
注意
创建您自己的模块
虽然大多数npm模块由第三方编写,但您也可以创建并发布自己的npm模块来容纳特定于您的应用程序的逻辑。您可以将模块提供给 Node.js 社区,也可以保留以供私人使用。 有关更多信息,请查看 npm 的“向注册表贡献包”指南。
添加外部软件包
To import and use an external dependency, you first need to add the dependency to your application. You can either add packages by name or upload a directory of dependencies.
重要
覆盖现有依赖项
您一次只能使用一种方法来指定应用可以使用的外部包。用于指定依赖项的最新方法是数据源,并且会覆盖之前的规范。
例如,通过用户界面按名称添加的软件包会覆盖之前添加的同一软件包的所有副本,包括上传的依赖项目录中的副本。
按名称和版本添加软件包
可以按名称将 npm 注册表中的软件包添加到相关应用中。可以添加特定版本或使用最新版本。
AtlasGoTriggers在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Streaming Data 标题下的 Triggers。
会显示触发器页面。
上传依赖项目录
您可以将压缩的 node_modules 软件包目录上传到应用。压缩的依赖目录不得超过 15MB。
重要
覆盖现有依赖项
导入存档时,所有现有依赖项都将被删除。
在本地安装外部依赖
要上传外部依赖项,首先需要一个本地 node_modules 文件夹,其中包含至少一个 Node.js 包。可以使用以下代码片段在本地安装要上传的依赖项:
npm install <package name>
如果 node_modules 文件夹尚不存在,则此命令会自动创建它。
注意
其他安装方法
您还可以配置 package.json 并运行 npm install 命令来安装 package.json 中列出的所有软件包(及其依赖项)。
要了解有关 npm 和 node_modules 的更多信息,请查阅 npm 文档。
AtlasGoTriggers在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Streaming Data 标题下的 Triggers。
会显示触发器页面。
在函数中导入软件包
可以导入已添加到应用中的内置模块和外部软件包,然后在函数中使用它们。要导入一个软件包,请使用函数体中的包名称来调用 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); };
例子
以下示例使用 lodash 依赖项创建Atlas Triggers函数。
AtlasGoTriggers在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Streaming Data 标题下的 Triggers。
会显示触发器页面。
定义新的触发函数。
在 Function 窗格中,粘贴以下代码:
exports = async function(changeEvent) { const _ = require('lodash'); const temp = ['a', 'b', 'c']; const result = _.filter(temp, (val) => val === 'a'); console.log("result: ", result); return result; };
单击 Run 执行该函数。在时间戳和执行时间之后,输出为:
> logs: result: a > result: [ "a" ] > result (JavaScript): EJSON.parse('["a"]')