Dud*_*lul 27 javascript v8 eval exception node.js
在JavaScript中我有一个var str = ".a long string that contains many lines..."
由异常引起的eval(str);
我想抓住它并打印导致异常的行号.(str内部的行...)
可能吗?
编辑作为Alligator项目(http://github.com/mrohad/Alligator)的一部分,我是JavaScript的应用程序服务器,我正在从磁盘读取文件和eval()嵌套到scriplet的任何东西(<??> )
我使用NodeJS(在V8之上)在浏览器外部运行此脚本.
尝试将try/catch添加到字符串而不是eval周围:
var code = 'try{\nvar c = thisFuncIsNotDefined();\n}catch(e){alert(e.lineNumber);}';
Run Code Online (Sandbox Code Playgroud)
我找到了一个效率很低的解决方案,但我只在 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));
}
});
Run Code Online (Sandbox Code Playgroud)