ACE编辑器因为define不是字符串而丢失了模块。

5

我在一个项目中使用了Ace编辑器。我正在尝试按照Ace编辑器页面上的高亮器部分中的教程创建一个高亮器,但是当我使用以下代码时:

define(function(require,exports,module){
        //any code here
});

我在Web控制台中看到了以下错误:

因为define不是一个字符串,所以该模块被放弃。

有人知道为什么会发生这种情况吗?


我也遇到过这种情况,但在我的情况下,是由于使用了不正确的js库来处理ace,这导致了define函数的问题,正如答案中所指定的那样。 - Avrdan
1个回答

10

Ace 定义了一个名为 define 的全局函数,而该函数是导致错误的原因。

如果您有其他JS库(特别是CommonJS或AMD模块)调用 define ,它们将在Ace加载之前被调用Ace版本。

在我的情况下,我有一个由Browserify生成的JS文件,其中包含一堆Node模块,其中之一使用空数组而不是字符串作为 module 参数来调用 define 。并且因为它是在Ace脚本文件之后包含的,所以它正在使用Ace版本的 define ,这会出现问题的错误消息。

更改您的脚本包括的顺序可能会解决此问题(将其他基于模块的脚本包括移动到Ace脚本包括之上)。这对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接