Node.js中SyntaxError的行号

 mobiledu2502924293 发布于 2023-02-10 23:36

我有一些使用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?
    }
}

我想用语法错误打印行号,但我有两个问题:

我不知道如何识别异常是否是SyntaxError别的.instaceof不起作用(更新 - 我可以使用e.name === "SyntaxError").

即使我能够识别它,我怎么能得到行号?可能吗?

提前致谢.

更新:我可以从中获取一些信息e.stack- 但是,堆栈跟踪中最顶层的调用是runInNewContext(带有其行号),但我仍然找不到内部的行号code,这导致了异常(SyntaxError).

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有