Mar*_*jer 13 javascript v8 exception node.js
我有一些使用vm模块和runInNewContext函数的代码,并执行动态生成的JavaScript代码.基本上是一个更安全的选择eval.
代码(变量code)可能包含语法错误,所以我想抓住它们并打印一些有用的信息.
try {
vm.runInNewContext(code, sandbox, filename);
}
catch (e) {
if (e instanceof SyntaxError) { // always false
console.log(e.toString()); // "SyntaxError: Unexpected token ||" for example
console.log(e.line); // how to get the line number?
}
}
Run Code Online (Sandbox Code Playgroud)
我想用语法错误打印行号,但我有两个问题:
SyntaxError别的.instaceof不起作用(更新 - 我可以使用e.name === "SyntaxError").提前致谢.
更新:我可以从中获取一些信息e.stack- 但是,堆栈跟踪中最顶层的调用是runInNewContext(带有其行号),但我仍然找不到内部的行号code,这导致了异常(SyntaxError).
| 归档时间: |
|
| 查看次数: |
8563 次 |
| 最近记录: |