ReferenceError: monaco is not defined
ReferenceError: monaco is not defined
我正在尝试将 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 条件来加载摩纳哥,一旦加载摩纳哥的主 editor.main 文件,我将尝试使用 monaco.editor.create()。但即使在加载 editor.main.js 之后,它也无法解析摩纳哥。我尝试在 initMonaco 函数中调试并查看 monaco 的值,它显示为不可用。我做错了什么吗?
注意:vs已经解析到monaco-editor/min/vs,也可以加载js文件到浏览器。此外,所有像选项和 _value 一样使用的变量都在组件中声明(我从这里删除了它们)。
如果其他人也在寻找这个,我能够解决问题,实际上问题是 monaco 将只加载它自己的加载器,我们在我们的项目中使用 systemjs 加载器。当我们尝试使用 monaco loader 提供的加载程序时,它工作正常。区别在于monaco loader在loader中加入了一些额外的功能,比如config,而这些在systemjs loader中是没有的。
我正在尝试将 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 条件来加载摩纳哥,一旦加载摩纳哥的主 editor.main 文件,我将尝试使用 monaco.editor.create()。但即使在加载 editor.main.js 之后,它也无法解析摩纳哥。我尝试在 initMonaco 函数中调试并查看 monaco 的值,它显示为不可用。我做错了什么吗?
注意:vs已经解析到monaco-editor/min/vs,也可以加载js文件到浏览器。此外,所有像选项和 _value 一样使用的变量都在组件中声明(我从这里删除了它们)。
如果其他人也在寻找这个,我能够解决问题,实际上问题是 monaco 将只加载它自己的加载器,我们在我们的项目中使用 systemjs 加载器。当我们尝试使用 monaco loader 提供的加载程序时,它工作正常。区别在于monaco loader在loader中加入了一些额外的功能,比如config,而这些在systemjs loader中是没有的。