从用户类型代码JavaScript获取输出

从用户类型代码JavaScript获取输出,javascript,reactjs,monaco-editor,Javascript,Reactjs,Monaco Editor,我正在试验(用于web的VSCode IDE)。目标是打印用户编写的代码的输出。Ex user typesconsole.log(“123”)然后我想得到“123”作为输出。我怎样才能做到这一点?任何正则表达式或类似的解决方案都是不好的。我需要代码的实际输出: const run=()=>{ const model=monaco.current.editor.getModel() const value=model.getValue()//值为console.log(“123”) var代码=新

我正在试验(用于web的VSCode IDE)。目标是打印用户编写的代码的输出。Ex user types
console.log(“123”)
然后我想得到“123”作为输出。我怎样才能做到这一点?任何正则表达式或类似的解决方案都是不好的。我需要代码的实际输出:

const run=()=>{
const model=monaco.current.editor.getModel()
const value=model.getValue()//值为console.log(“123”)
var代码=新函数(值)
var code2=eval(value)//记录“123”
console.log(code)//logsƒanonymous({console.log(“123”)}
console.log(code2)//未定义日志
常量输出=?
}
设置代码(代码)}
/>
在本例中,如何将
常量输出设置为“123”?

或者直接从这个代码段中获取“123”作为输出
var s=“console.log(123)”
警报
var s=“console.log(123)”
警报(评估))
var s=“console.log(123)”

警报(eval))
您不能使用默认的console.log函数执行此操作。您需要修改它。请尝试此操作

console.tempLog = console.log;
console.log = function(value)
{
    console.tempLog(value);
    return value;
};

const output = eval('console.log("123")');

在这里,我创建了console.tempLog以避免递归循环!希望这有帮助!

使用默认的console.log函数无法做到这一点。您需要修改它。请尝试此操作

console.tempLog = console.log;
console.log = function(value)
{
    console.tempLog(value);
    return value;
};

const output = eval('console.log("123")');

在这里,我创建了console.tempLog以避免递归循环!希望这有帮助!

我的代码中也有同样的内容,但问题是我需要将123存储在一个变量中。我尝试过它,但不知道如何使用它。你能添加一个代码段吗?它现在可以工作了。但是我需要将它与eval结合起来才能工作吗?@PEPEGA是的,继续使用eval如何工作您当前正在使用,只需覆盖
控制台。log
我的代码中也有相同的内容,但问题是我需要将123存储在一个变量中。我尝试过它,但不知道如何使用它。您可以添加一个代码段吗?它现在可以工作了。但是我需要将它与eval结合起来才能工作吗?@PEPEGA是的,继续使用eval您当前的状态只需重写
console.log