NodeJS 检查器 - 使用 throwOnSideEffect 和 replMode returns 无评估

NodeJS inspector - evaluate with throwOnSideEffect and replMode returns nothing

节点:v16.13.1 under OS:macos 12.2 (Darwin Kernel Version 21.3.0)

在以下情况下,与replModethrowOnSideEffect参数一起使用的evaluate方法不做任何事情。当 throwOnSideEffectreplMode 分别设置时,或者当提供不同的表达式(例如 1+1)时,同样的方法非常有效。评估一个不存在的变量似乎对 NodeJS 没有吸引力。我期待 ReferenceError 结果,但过程只是 returns 0.

我使用的功能有误,或者我遗漏了什么...?

const inspector = require('inspector');

const session = new inspector.Session();
session.connect();

function myEval(expression, throwOnSideEffect, timeout, replMode) {
    session.post(
        'Runtime.evaluate',
        { expression, throwOnSideEffect, timeout, replMode },
        (err, res) => {
            if (err) {
                return console.error('err');
            }
            return console.log('works', res);
        });
}

// does not work as expected when executed alone
myEval('doesNotExist', true, 200, true);

// works as expected
// myEval(exp, true, 200, false);

// works as expected
// myEval(exp, false, 200, true);

将节点升级到版本 v17.7.2 解决了问题。