When I try to create a Range object in ace.js, an “Illegal Constructor” error is thrown

淺唱寂寞╮ 提交于 2019-11-29 09:13:54

问题


I am trying to create a Range object for the ace.js editor in my code, but it's not working. It is failing in a way I can't figure out. In the Ace documentation, this constructor is:

new Range(Number startRow,
          Number startColumn,
          Number endRow,
          Number endColumn)

But when I try this in my code:

new Range(0, 0, 0, 1)

It raises an Uncaught TypeError: Illegal constructor error. What is causing this behavior, and why doesn't it match the documentation?


回答1:


Range is a native type is most browsers that you cannot instantiate. I'm not really familiar with Ace, but I'm guessing that they use some sort of namespacing so that you will do something like new Ace.Range().

Edit: It looks like they are using CommonJS, so you can import the method and alias it however you like:

var Range = require('ace/range').Range,
    mine = new Range(0,0,10,0);



回答2:


Replace require('ace/range').Range with ace.require('ace/range').Range




回答3:


This solution var Range = ace.acequire('ace/range').Range; works for me!!!

Full code: https://stackoverflow.com/a/53387989/630169



来源:https://stackoverflow.com/questions/10452869/when-i-try-to-create-a-range-object-in-ace-js-an-illegal-constructor-error-is

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!