2017-03-06 91 views
1

我尝试使用具有角2.我的分量微软摩纳哥编辑器的ReferenceError:摩纳哥没有定义

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,一旦摩纳哥的主editor.main文件被加载我想创建一个编辑器使用monaco.editor.create()。但即使在加载editor.main.js之后,它也无法解析摩纳哥。我试图在initMonaco函数中调试并查看monaco的值,但它显示为不可用。难道我做错了什么?

注意:VS已经解析到摩纳哥编辑器/ min/vs,并且它也能够将js文件加载到浏览器。此外,像选项和_value所使用的所有变量在组件中声明(我从这里删除它们)。

+0

你在哪里启动了“摩纳哥”? –

+0

摩纳哥应该由摩纳哥的editor.main.js文件解决吗? – Sri

+0

不可以。您必须在上下文中为其提供参考 –

回答

0

如果别人也在寻找这个,我能够解决问题,其实问题是摩纳哥只会加载它自己的加载程序,我们在我们的项目中使用了systemjs加载程序。当我们尝试用摩纳哥装载机提供的装载机时,它运行良好。不同的是,摩纳哥装载程序正在向加载程序添加一些额外的功能,如配置文件,这些功能在systemjs加载程序中不可用。