一尘不染

Javascript eval()异常-行号

node.js

在JavaScript中,我有一个var str = ".a long string that contains many lines..."
eval(str);

我想抓住它并打印导致异常的行号。(str ..内部的线。)

可能吗?

编辑
作为JavaScript的应用程序服务器Alligator项目(http://github.com/mrohad/Alligator)的一部分,我正在从磁盘和eval()中读取嵌套到scriplet(<??>

我正在浏览器外部使用NodeJS(在V8之上)运行此脚本。


阅读 492

收藏
2020-07-07

共1个答案

一尘不染

我找到了一个效率很低的解决方案,但是我只在debug_mode == 1时才使用它,所以还不错。

我将eval_str写入文件,“导入该文件,然后在try {} catch {}中调用它,然后从堆栈跟踪中解析错误行…

在我的特定情况下,代码如下所示:

var errFileContent = "exports.run = "+evalStringAsAFunction+";";
fs.writeFile('/home/vadmin/Alligator/lib/debugging.js', errFileContent, function (err) {
    var debug = require('./debugging');
    try{
         debug.run(args...);
    }
    catch(er){
         log.debug(parseg(er));
    }
});
2020-07-07