我正在使用loader.js创建monaco编辑器,但在控制台中收到2次错误“每个脚本文件只能有一个匿名定义调用”。
<script src="/monaco-editor/min/vs/loader.js"></script>
创建编辑器的代码
require.config({ paths: { 'vs': '/monaco-editor/min/vs' }});
require(['vs/editor/editor.main'], function() {
monacoEditor= monaco.editor.create(document.getElementById('coding-editor'), {
value: [
'function x() {',
'\tconsole.log("Hello world!");',
'}'
].join('\n'),
language: 'javascript'
});
});
我试图搜索问题,并找到以下相关答案:
您正在加载的某些代码正在调用带有匿名模块ID的define。您可以:
通过AMD加载程序加载该代码(即手动要求它),以便AMD加载程序创建<script>
标签。
在AMD加载程序之前加载该代码(即define对该代码段不可用)
在该脚本评估期间未定义定义(即,如果您使用<script>
标签加载该脚本,则先取消定义并在之后恢复它)
尝试取消定义define.jquery,AFAIK jquery可能正在检查define函数上的内容
此页面已经有很多jquery,由于jQuery我了解这一点。请帮助一些人以身作则。谢谢
答案 0 :(得分:0)
今天早上我遇到了同样的问题,我应用了第二个解决方案。
在AMD加载程序之前加载该代码(即define对该代码段不可用)
之所以可行,是因为错误说是从jQuery内部匿名调用define
。在require.js website中有进一步的解释,恰好使用了类似于loader.js的加载器功能(定义,要求)。
就我而言,我只是简单地确保将加载程序包含在jQuery之后,以免define
冲突。
答案 1 :(得分:0)
我曾尝试通过标签创建脚本,但收到警告:'只能有一个匿名定义' 所以我只是覆盖它:
this.temp_define = window['define'];
head.appendChild(loaders);
window['define'] = undefined;