Nodejs:如何设置eval的文件名?

背景:我为node.js开发了一个小型模块系统,它asynchronous从一个单独的源服务器加载所有必需的代码,并用eval(code)编译它。 我的问题是,在这样的“eval-ed”代码中的所有运行时错误,堆栈跟踪显示<anonymous>作为文件名—我无法区分哪个代码段被引用。

我的问题:是否有一种方法来设置eval的文件名,以便堆栈跟踪显示一些程序定义的string,而不是<anonymous>

我目前的(不完美的)解决scheme:到目前为止,我把代码写入一个文件并加载require(file) 。 这将播种文件名—但这是一个复杂的解决方法。

注意:正常情况下,运行时错误不会在eval调用的编译中显示出来,而是在使用编译后的代码的时候。 因此,围绕eval进行尝试/捕捉并不能帮助识别哪个代码块失败。

不要使用eval(永远)。 为了您的目的,您可以使用vm模块 ( vm.runInThisContext或其他)。 您可以传递文件名作为参数。 内部require也是一样的。

最终,V8引擎的这个新function将会进入Node.js:

问题2948:在v8的parsing器中支持//#sourceURL =和//#sourceMappingURL =

此方法目前适用于浏览器。