Ace编辑器"定义未定义"

Sti*_*nky 15 javascript ace-editor

我正在尝试将ace编辑器添加到我的应用程序中.我从github下载了它,将"ace/lib/ace"目录放入我的应用程序目录中,包括:

<script src="ace/lib/ace/ace.js" type="text/javascript" charset="utf-8"></script>"
Run Code Online (Sandbox Code Playgroud)

在我的身体标签和:

editor = ace.edit "editor"
Run Code Online (Sandbox Code Playgroud)

在我的脚本标签中.我试图在Chrome和Firefox中加载页面,我在ace.js中得到"define is not defined":46.ace.js中的行是:

define(function(require, exports, module) {
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么ace期望define()函数存在以及为什么它没有找到它?这是我的来源:

<html>
  <body>
    <div id="editor">some text</div>
    <script src="ace/lib/ace/ace.js" type="text/javascript" charset="utf-8"></script>
    <script>
      var editor = ace.edit("editor");
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Sha*_*arg 7

如果你已经有了源代码,那么它仍然很容易做到.只需进入复制所有ace源的目录.

然后做:

npm install
node Makefile.dryice.js
Run Code Online (Sandbox Code Playgroud)

有关其他详细信息,请参阅Wiki .https://github.com/ajaxorg/ace/wiki/Building-ace

  • 谢谢.我忘了实际构建代码,你的评论提醒我这样做.哎呀.☺ (2认同)

ulu*_*ulu 6

我通过放入window.define = ace.define;我的 DOMload 处理程序来破解它。


小智 5

您收到此错误的原因是页面中未包含RequireJS JavaScript库。

要解决此问题,请使用ace构建或在页面中包含RequireJS。

如果选择包括RequireJS,则您的html片段将如下所示:

<!-- Editor will go here -->
<div id="editor"></div>

<!-- Load RequireJS -->
<script src="lib/requirejs/require.js"></script>

<!-- Initialize ace -->
<script>

    // Tell RequireJS where ace is located
    require.config({
        paths: {
            'ace': 'lib/ace'
        }
    });

    // Load the ace module
    require(['ace/ace'], function(ace) {
        // Set up the editor
        var editor = ace.edit('editor');
        editor.setTheme('ace/theme/monokai');
        editor.getSession().setMode('ace/mode/javascript');
        // etc...
    });
</script>
Run Code Online (Sandbox Code Playgroud)