我有一个范围问题,我似乎无法优雅地解决。
方案
我的文件顶部有以下列方式需要的模块
var moment = require('moment-timezone');
我正在尝试做的是,将一个函数保存为JSON字符串并将其转换回函数(使用JSON-fn)。在要求之下,我有类似的东西:
module.exports = function() {
//job[1] is a JSON hash holding the function. More on that in the below text.
var func = JSONfn.parse(job[1])
func()
};
对于不需要文件模块的函数,我可以调用该函数,它可以完美地工作。但是,当我尝试使用moment模块调用函数时,我得到以下错误:
ERROR ReferenceError: moment is not defined at eval
尽管我付出了最大的努力,但似乎无法将'时刻'变量放入函数的范围内。如果我将模块的require语句更改为:
,它可以工作global.moment = require('moment-timezone');
我尝试过多个不同的模块,只是为了确认它不是特定的时刻,而且我测试过的模块都没有用。
问题
将模块作为全局对象的范围确定是解决问题的适当方法吗?或者是否有其他方法将函数附加到正确的范围?
提前感谢您的帮助,并期待阅读您的建议!