2

我正在关注Blockly Code Generators示例,并且能够生成 Python 代码。但是当我运行 Python 代码时,我得到了一个错误。下面的错误似乎是“eval(code)”,如果我想直接在浏览器中执行 Python 代码该怎么办?谢谢你的帮助!

Blockly.JavaScript.addReservedWords('code');
var code = Blockly.JavaScript.workspaceToCode(workspace);
try {
  eval(code);
} catch (e) {
  alert(e);
}

这是快照不幸的是我没有足够的积分在这里发布图像

4

3 回答 3

1

你能用一个简单的代码试试这个吗,比如 -print('Hello World!')

根据图像,问题可能与缩进有关,缩进在python中非常重要,否则会导致语法错误。

您还应该将代码更改为 -

Blockly.Python.addReservedWords('code');
var code = Blockly.JavaScript.workspaceToCode(workspace);
try {
  eval(code);
} catch (e) {
  alert(e);
}
于 2015-06-16T15:12:45.577 回答
0

尝试使用编写为 JS 的 Python interp 进行评估,例如http://brython.info/

于 2016-02-15T21:48:58.773 回答
0

当您使用 javascript 的 eval 函数时,您实际上是在说打印页面,因为 print() 意味着在 javascript 中打印页面。

解决这个问题的方法是在 Blockly 本身中,因为他们调用这个函数的代码。

   function() {
  Blockly.JavaScript.INFINITE_LOOP_TRAP = 'checkTimeout();\n';
  var timeouts = 0;
  var checkTimeout = function() {
    if (timeouts++ > 1000000) {
      throw MSG['timeout'];
    }
  };
  var code = Blockly.JavaScript.workspaceToCode(Code.workspace);
  Blockly.JavaScript.INFINITE_LOOP_TRAP = null;
  try {
    eval(code);
  } catch (e) {
    alert(MSG['badCode'].replace('%1', e));
  }

以上代码来自 demos/code/code.js 第 553 行中的 code.js。

于 2020-09-30T20:41:52.490 回答