与 bower 一起安装的 ACE 编辑器找不到我的模式

ACE editor installed with bower does not find my mode

本文关键字:编辑器 找不到 我的 模式 ACE bower 一起 安装      更新时间:2023-09-26

我为 ACE 编辑器编写了一个自定义模式

我的模式.js

ace.define('my-mode', [/* ... */], function(require, exports, module) { /* ... */ });

我尝试使用

索引.js

var editor = ace.edit('editor');
editor.getSession().setMode('my-mode');

我安装了 ACE 编辑器(ace-builds)和 requirejs with bower

鲍尔.json

{
  "name": "my-project",
  "dependencies": {
    "ace-builds": "^1.2.3",
    "requirejs": "^2.2.0"
  }
}

和配置的要求

requirejs-config.js

require.config({
  paths: {
    ace: "bower_components/ace-builds/src-noconflict/ace"
  }
});

我的页面看起来像这样

索引.html

<body>
  <div id="editor"></div>
  <script src="bower_components/requirejs/require.js"></script>
  <script src="requirejs-config.js"></script>
  <script src="bower_components/ace-builds/src-noconflict/ace.js"></script>
  <script src="my-mode.js"></script>
  <script src="index.js"></script>
</body>

可悲的是,电话

editor.getSession().setMode('my-mode');

导致错误

Failed to load resource: http://localhost:5555/bower_components/ace-builds/src-noconflict/mode-my-mode.js
the server responded with a status of 404 (Not Found)

如何配置 acerequirejs 以便找到 my-mode

我找到了解决方案。在使用 my-mode 之前(例如在索引.js的开头)调用

ace.config.setModuleUrl('my-mode', '/path/to/my-mode.js');