Node:module.exports中不在函数范围内的所需模块?

时间:2014-11-06 21:40:54

标签: javascript node.js module scope eval

我有一个范围问题,我似乎无法优雅地解决。

方案

我的文件顶部有以下列方式需要的模块

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');

我尝试过多个不同的模块,只是为了确认它不是特定的时刻,而且我测试过的模块都没有用。

问题

将模块作为全局对象的范围确定是解决问题的适当方法吗?或者是否有其他方法将函数附加到正确的范围?

提前感谢您的帮助,并期待阅读您的建议!

0 个答案:

没有答案