javascript - 引用错误 : monaco is not defined

标签 javascript angular typescript monaco-editor

我正在尝试将 Microsoft monaco 编辑器与 angular 2 一起使用。我的组件是

declare const monaco: any;
declare const require: any;

export class MonacoEditorComponent implements AfterViewInit {
   ngAfterViewInit() {

        let onGotAmdLoader = () => {
            // Load monaco
            (<any>window).require(["vs/editor/editor.main"], () => {

                this.initMonaco();
            });
        };

        // Load AMD loader if necessary
        if (!(<any>window).require) {
            let loaderScript = document.createElement("script");
            loaderScript.type = "text/javascript";
            loaderScript.src = "vs/loader.js";
            loaderScript.addEventListener("load", onGotAmdLoader);
            document.body.appendChild(loaderScript);
        } else {
            onGotAmdLoader();
        }
    }

    initMonaco() {
        let myDiv: HTMLDivElement = this.editorContent.nativeElement;
        let options = this.options;
        options.value = this._value;
        options.language = this.language;
        this._editor = monaco.editor.create(myDiv, options);
   }
}

所以基本上,我首先尝试通过检查 window.require 上的 if 条件来加载 monaco,一旦加载了 monaco 的主 editor.main 文件,我就尝试使用 monaco.editor.create() 创建一个编辑器.但即使在加载 editor.main.js 之后,它也无法解析摩纳哥。我尝试在 initMonaco 函数中调试并查看 monaco 的值,它显示为不可用。我做错了什么吗?

注意:vs 已经解析到 monaco-editor/min/vs 了,它也可以加载 js 文件到浏览器。此外,所有使用的变量,如 options 和 _value 都在组件中声明(我从这里删除了它们)。

最佳答案

如果其他人也在寻找这个,我能够解决这个问题,实际上问题是摩纳哥将只加载它自己的加载器,我们在我们的项目中使用 systemjs 加载器。当我们尝试使用 monaco loader 提供的加载程序时,它工作正常。不同之处在于,monaco loader 为 loader 添加了一些额外的功能,例如 config,这是 systemjs loader 所没有的。

关于javascript - 引用错误 : monaco is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42632650/

相关文章:

node.js - JavaScript : Empty array after foreach loop

javascript - 如何将 display flex div 滚动到底部

Angular4 可观察到数组

javascript - Angular:服务与组件中的功能?

javascript - 通过调用函数来 react HOC; "Functions are not valid as a React child"

forms - 是什么导致 "control.registerOnChange is not a function"错误

JavaScript 日期对象重置

javascript - 使 knockout "visible"使用 CSS "visibility"属性

javascript - 将 Stringarray 交给 django 模板并在 d3 中使用它

angular - 在 '...ge-2.2.1.tgz"附近解析时出现错误 JSON 输入意外结束} ,"engin'