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)
在以下情况下,与replMode
和throwOnSideEffect
参数一起使用的evaluate方法不做任何事情。当 throwOnSideEffect
和 replMode
分别设置时,或者当提供不同的表达式(例如 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
解决了问题。
节点:v16.13.1 under OS:macos 12.2 (Darwin Kernel Version 21.3.0)
在以下情况下,与replMode
和throwOnSideEffect
参数一起使用的evaluate方法不做任何事情。当 throwOnSideEffect
和 replMode
分别设置时,或者当提供不同的表达式(例如 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
解决了问题。