Ace 在线编辑器的安装报错 ace is not defined

发布于 2019-02-19 19:44:19 字数 2063 浏览 5082 评论 0

刚刚做了一个在线运行 HTML 代码的小工具,使用的是 Ace 这款在线编辑器插件,在按照常规的方法安装插件的时候出现了两个报错,我想很多使用这款插件的人肯定遇到了这个问题,现在把详细的解决方法分享给大家。

常规安装方法

安装常规的插件使用方法,我们在使用ace插件时候只需要引入ace.js文件即可:

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

然后在给一个 DIV 添加 ID editor

<div id="editor">some text</div>

最后再调用这个插件

var editor = ace.edit("editor");

我以为这样就可以使用插件了,但是会出现两个报错:

define is not defined
ace is not defined

一时想不通这到底哪里出错了,查看了项目的 github 的使用方法,也是这样的。

解决方法

stackoverflow 网站上找到了解决方法,这是因为插件使用一种按需加载(暂且这么称呼)的功能,需要require.js文件来加载插件的文件,然而这个插件并没有包含这个文件,或者说是我们使用方法不正确。

正确安装插件

如果你已经有了源代码,那么它是很容易做到,在你复制所有 ACE 源目录中去,运行下面的代码。

npm install
node Makefile.dryice.js

更多详解请参加 https://github.com/ajaxorg/ace/wiki/Building-ace

使用 requirejs 加载文件

还有一种方法就是使用上面提到的 require.js 插件。 你得到这个错误因为 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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

遂心如意

文章 0 评论 0

5513090242

文章 0 评论 0

巷雨优美回忆

文章 0 评论 0

junpengz2000

文章 0 评论 0

13郎

文章 0 评论 0

qq_xU4RDg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文