我正在尝试在我的代码中为ace.js
编辑器创建一个 Range 对象,但它不起作用。它以一种我无法弄清楚的方式失败了。在 Ace 文档中,此构造函数为:
new Range(Number startRow,
Number startColumn,
Number endRow,
Number endColumn)
但是当我在我的代码中尝试这样做时:
new Range(0, 0, 0, 1)
它会引发Uncaught TypeError: Illegal constructor
错误。是什么导致了这种行为,为什么它与文档不匹配?
Range
是本机类型,是您无法实例化的大多数浏览器。我对 Ace 不是很熟悉,但我猜他们使用某种命名空间,以便您会做类似 new Ace.Range()
的事情。
编辑:看起来他们正在使用CommonJS,因此您可以根据需要导入方法并为其别名:
var Range = require('ace/range').Range,
mine = new Range(0,0,10,0);
将require('ace/range').Range
替换为ace.require('ace/range').Range
这对我有用:
import { Range } from "ace-builds"
这个解决方案var Range = ace.acequire('ace/range').Range;
对我有用!!
完整代码:https://stackoverflow.com/a/53387989/630169