首页 > 解决方案 > 如何将基于 require.js 的脚本作为组件包含到 Angular 中

问题描述

我喜欢使用基于 Ace 编辑器的 xtext 编辑器创建 Angular 组件。您可以找到编辑器的示例https://www.eclipse.org/Xtext/documentation/330_web_support.htmlhttps://xtext-demo.itemis.com/

使用 require.js 将其包含到纯 html 中的代码如下所示:

require.config({
    paths: {
        "jquery": "webjars/jquery/<version>/jquery.min",
        "ace/ext/language_tools": "webjars/ace/<version>/src/ext-language_tools",
        "xtext/xtext-ace": "xtext/<version>/xtext-ace"
    }
});
require(["webjars/ace/<version>/src/ace"], function() {
    require(["xtext/xtext-ace"], function(xtext) {
        xtext.createEditor();
    });
});

现在我正在努力如何将其包含到基于 Angular 的组件中。我尝试了以下。

import { Component, OnInit, Input } from '@angular/core';

import 'ace-builds/src/ace';
import 'ace-builds/src/ext-language_tools';
import xtext from 'xtext/xtext-ace';

@Component({
  selector: 'app-qml-editor',
  templateUrl: './qml-editor.component.html',
  styleUrls: ['./qml-editor.component.css']
})
export class MyDslEditorComponent implements OnInit {

  @Input() componentId: string;

  constructor() { }

  ngOnInit() {
    console.log('xtext', xtext);
    xtext.createEditor();
  }
}

当我编译我的代码时,我得到类似...

ERROR in ./node_modules/ace-builds/src/ace.js
Module not found: Error: Can't resolve '../../lib/lang' in '..my-dir..\node_modules\ace-builds\src'
ERROR in ./node_modules/ace-builds/src/ace.js
Module not found: Error: Can't resolve '../../lib/oop' in '..my-dir..\node_modules\ace-builds\src'

ace.js 文件中的 require.js 似乎无法正常工作。未正确解析所有本地引用。

王牌.js

同样经过数小时的谷歌搜索,我找不到解决方案。但很多主要是我对它应该如何工作的理解缺失。

对此的任何帮助将不胜感激。

标签: javascriptangularrequirejsxtextace-editor

解决方案


推荐阅读