我正在为数据管理编写一个mongo shell脚本。我想用模块化代码编写它,它使用函数库作为模块。在某些情况下,我自己的模块。在其他情况下,精心挑选的node.js模块(我知道它们可以在Mongo shell环境中工作,例如uuid)。
不幸的是,Mongo缺乏真正的模块管理。 load()不是一回事。我正在寻找一个回填原样。
有没有人知道一个可以提供CommonJS模块加载功能的库,它是通用的,可以在Mongo shell中运行,还是已经被移植到Mongo shell中运行?
是的,我知道,我可以在纯粹的node.js环境中进行。但是如果有一个真正的模块加载器可以在mongo shell中运行,那将是我的第一选择。
答案 0 :(得分:6)
嗯,有一些技巧可以让它发挥作用。
第一种,如果您的CommonJS模块不需要模块,则简单如下:
var module = {};
load('/lib/migration/forms.js');
print(typeof module.exports);
第二,如果您的模块需要其他模块,则使用browserify构建单个模块,并像上例中那样需要它。
答案 1 :(得分: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