Blockly报错:Uncaught TypeError: buy_qty_block块定义无效求解
Blockly开发报错排查:Invalid block definition for type: buy_qty_block
问题场景
在Blockly开发中,配置了包含buy_qty_block的「Buy or Sell」分类块,但实例化该块时触发错误:Uncaught TypeError: Invalid block definition for type: buy_qty_block
分类配置文件
{ kind: "category", name: "Buy or Sell", colour: 260, contents: [ { kind: "block", type: "buy_qty_block", }, { kind: "block", type: "sell_qty_block", } ], },
buy_qty_block定义代码
Blockly.Blocks["buy_qty_block"] = { init: function () { this.jsonInit({ type: "buy_qty_block", message0: "Buy %1 ", args0: [ { type: "field_number", name: "BUY_AMOUNT", }, // , { // "type": "input_dummy", // "name": "ASSETSLIST", // } ], message1: "%1 ", args1: [ { type: "input_dummy", name: "ASSETSLIST", }, ], previousStatement: true, nextStatement: "Action", extensions: ["assets_list_extension"], }); }, };
错误栈信息
block.ts:264 Uncaught TypeError: Invalid block definition for type: buy_qty_block at new n (block.ts:264:15) at a.<anonymous> (createSuper.js:11:24) at new a (block_svg.ts:155:5) at ah.newBlock (blockly.ts:564:14) at Ya (blocks.ts:404:27) at Oa (blocks.ts:361:17) at wa (blocks.ts:325:10) at t.value (flyout_base.ts:761:24) at t.value (flyout_base.ts:669:30) at t.value (flyout_base.ts:604:29)
排查与解决方法
- 检查加载顺序:确保
buy_qty_block的定义代码在Blockly初始化、分类配置加载之前执行。如果配置先加载,Blockly找不到对应定义就会报错。 - 验证扩展存在性:块定义中使用了
assets_list_extension,若该扩展未定义或未正确加载,会导致块定义无效。可以先注释掉extensions: ["assets_list_extension"]测试,若错误消失,需先实现或加载该扩展。 - 检查语法与配置匹配:确认
message0/args0、message1/args1的占位符与参数数量匹配;检查nextStatement的"Action"是否为已注册的合法语句类型。 - 核对类型名称一致性:确保配置文件、块定义、
jsonInit中的buy_qty_block名称完全一致,无大小写或拼写错误。
内容的提问来源于stack exchange,提问作者soubhagya
相关产品推荐
相关产品推荐

