每个脚本文件只能有一个匿名定义调用。

7

我正在使用loader.js创建monaco编辑器,但在控制台中出现了两次错误“Can only have one anonymous define call per script file”。

<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加载程序创建
2个回答

2
我今天早上遇到了同样的问题,我采用了第二种解决方案。
在 AMD 加载器之前加载该代码(即 define 在该代码中不可用)。
这起作用是因为 define 是匿名调用 jQuery 中的,正如错误所说。require.js 网站 进一步解释了这一点,该网站使用类似于 loader.js 的加载器函数(define、require)。
在我的情况下,我只需确保在 jQuery 之后包含我的加载器,以避免 define 冲突。

你能展示一下你是怎么做的吗? - gciochina
1
@gciochina 这已经有一段时间了,但在阅读上下文后,变化基本上是在加载任何其他代码之前使用define来加载,以免干扰加载器。 - Alberto Castillo G

0

我曾尝试通过标签创建脚本,但出现警告:“只能有一个匿名定义”,于是我选择覆盖它:

        this.temp_define = window['define'];
        head.appendChild(loaders);
        window['define'] = undefined;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接