17

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

<script src="ace/lib/ace/ace.js" type="text/javascript" charset="utf-8"></script>"

在我的身体标签和:

editor = ace.edit "editor"

在我的脚本标签中。我尝试在 Chrome 和 Firefox 中加载页面,但在 ace.js:46 中出现“未定义定义”。ace.js 中的行是:

define(function(require, exports, module) {

有谁知道为什么 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>
4

5 回答 5

7

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

然后做:

npm install
node Makefile.dryice.js

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

于 2012-08-12T02:36:09.900 回答
6

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

于 2013-11-10T15:04:18.713 回答
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>
于 2013-02-15T07:04:08.327 回答
2

在 React 中,如果你从 ace-builds 导入任何东西,你的导入顺序很重要。

应该是这样的

import AceEditor from 'react-ace';
import 'ace-builds/src-noconflict/mode-json';

不像这样

import 'ace-builds/src-noconflict/mode-json';
import AceEditor from 'react-ace';
于 2020-10-05T07:06:53.257 回答
-4

或者,您可以使用 CDN

并更换

<script src="/ace-builds/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>

有类似的东西

<script src="http://cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js" type="text/javascript" charset="utf-8"></script>
于 2014-07-05T11:44:16.077 回答