9

我正在编写一个用于数据管理的 mongo shell 脚本。我想使用将函数库用作模块的模块化代码来编写它。在某些情况下,我自己的模块。在其他情况下,仔细选择 node.js 模块(我知道它们可以在 Mongo shell 环境中工作,例如 uuid)。

不幸的是,Mongo 缺乏真正的模块管理。load() 不是一回事。我正在寻找一个回填,因为它是。

有谁知道可以提供 CommonJS 模块加载功能的库,该库足够通用以在 Mongo shell 中运行,或者已被移植以在 Mongo shell 中运行?

是的,我知道,我可以在纯 node.js 环境中完成。但是,如果有一个真正的模块加载器可以在 mongo shell 中工作,那将是我的首选。

4

2 回答 2

7

好吧,有一些技巧可以让它工作。

首先,如果您的 CommonJS 模块不需要任何模块,则简单如下:

var module = {};

load('/lib/migration/forms.js');

print(typeof module.exports);

第二,如果您的模块需要其他模块,请使用 browserify 构建单个模块,并像上面的示例一样需要它。

于 2015-11-09T11:08:44.127 回答
1

不,mongo shell 是它自己的运行 V8 引擎的 JavaScript 环境。您无法将 Node.js 模块加载到 mongo shell 中,而不能将其加载到浏览器中。许多 Node 函数不会成为 mongo shell 环境的一部分。您可以在 Node.js 中使用 Node.js 驱动程序,这样您就可以使用您的 Node 模块,或者您可以尝试将必要的位放入一个 js 文件中,您可以在运行 shell 时运行该文件来设置适当的环境,例如

mongo --shell mymongohost:port/myDB myjsfunctions.js
于 2014-08-30T02:10:05.327 回答