2014-04-22 2 views
0

ace text editor을 사용하려고합니다. 에이스 라이브러리 ace.js 라이브러리 require.js을 필요로하는 것, 그리고 내가 html로 (일부 요소가 생략으로) 처음과 같습니다 코드가 : 문서로드 후 어떤 타이밍에서에이스로드로 인해 캐치가 발생하지 않음 : 익명의 define() 모듈이 일치하지 않습니다.

<html><body> 
    <script src="path/to/require.js"> 
    <script src="path/to/ace.js"> 
<body></html> 

를, 아약스 호출이 될 수있는 대상 <div>를 삽입 이 같은 구조의 결과로, DOM에 텍스트 편집기 및 <script> 노드로 전환 :

<html><body> 
    <div id="foo">Hello World</div> 
    <script>ace.edit('foo');</script> 
    <script src="path/to/require.js"> 
    <script src="path/to/ace.js"> 
<body></html> 

아약스 기능은 문서가로드 된 후에 만 ​​작동, 그래서 그 시간 부분으로 확실 <script>ace.edit('foo');</script> dom에 추가 된 파일은입니다.및 ace.js이로드되었습니다.

Uncaught Error: Mismatched anonymous define() module: function (require, exports, module) { 
"use strict"; 

require("./lib/fixoldbrowsers"); 

var dom = require("./lib/dom"); 
var event = require("./lib/event"); 

var Editor = require("./editor").Edito...<omitted>...ch 

require.js에서 온다 : 아약스가 완료

, 자바 스크립트는이 오류를 발생시킵니다. 이 오류가 require.js 일반적입니다처럼 보이는, 나는 말한다 설명 here 볼 수 있습니다 :

If you manually code a script tag in HTML to load a script with an anonymous define() call, this error can occur.

을하지만 난 그게 무슨 뜻인지 모르겠어요. ace.jsrequire이지만 ace.js<script> 태그에 직접 코딩되어 있지 않습니다. <script src="...">이라는 파일에 있습니다.

어떻게하면됩니까?

답변

2

pre-packaged ace.js을 사용하는 경우은 자신의 define을 사용할 require.js가 필요하지 않습니다. require.jsace.js을 모두 포함하는 경우 src-noconflict 버전을 사용해야합니다.

당신이 require.js를 사용하는 경우, 당신은 그것 (이 당신의 오류 설명에 대해 이야기 것입니다) 오히려 <script> 태그의 src 속성을 사용하는 것보다, 에이스를로드하는 데 사용한다 :

<script> 
    var ace = require("./path/to/ace"); 
</script> 

하지 마십시오 해당 경로에 .js 확장명을 포함하십시오.

관련 문제