2014-08-29 37 views
5

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

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

是否有人知道可以提供CommonJS模块加载功能的库,该库的通用性足以在Mongo shell中运行,或者已经移植到Mongo shell中运行?

是的,我知道,我可以在纯粹的node.js环境中完成它。但是,如果真的模块加载器能够在mongo shell中工作,那么这将是我的第一选择。

+0

'mongo' shell是一个比Node.js更有限的JavaScript环境(尤其是当涉及到I/O选项时)。如果你想使用Node模块,为什么不直接在Node中实现你的脚本? – Stennie 2014-08-30 03:10:09

回答

0

否。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 
+1

我澄清了我的问题。这不是关于运行任意node.js模块。这是关于使用标准语法编写模块化代码的。 – 2014-09-02 20:30:49

+0

没有模块加载器或类似的东西,AFAIK。最好的办法是在shell启动时运行一个脚本,要么做一些事情,要么在范围内设置一个函数和变量。我相信人们会很好地使用某种模块加载器(眨眼眨眼)。 – wdberkeley 2014-09-02 20:43:15

+0

我会的! :)如果我能找到CommonJS,我会采取一些措施。该网站似乎被打破。 :( – 2014-09-03 15:15:22

2

嗯,有一些提示,以得到它的工作。

第一,如果你的CommonJS的模块无需模块是一个简单的:

var module = {}; 

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

print(typeof module.exports); 

第二,如果你的模块需要别人在上面的例子中,以构建具有browserify单个模块,并要求它像。

相关问题