4

我正在使用 loader.js 创建摩纳哥编辑器,但在控制台中出现 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 调用定义。你可以:

通过 AMD 加载程序加载该代码(即手动要求它),以便 AMD 加载程序创建<script>标签。

在 AMD 加载程序之前加载该代码(即该代码段将无法使用定义)

在该脚本的评估期间取消定义(即,如果您使用<script>标签加载它,则在之前取消定义并在之后恢复它)

尝试取消设置define.jquery,AFAIK jquery 可能正在检查define 函数

这个页面已经有很多 jquery 并且我理解这一点是因为 jQuery。请帮助一些人让我通过例子来理解。谢谢

4

2 回答 2

0

今天早上我遇到了同样的问题,我应用了第二个解决方案。

在 AMD 加载程序之前加载该代码(即该代码段将无法使用定义)

这是有效define的,因为正如错误所说,它是从 jQuery 内部匿名调用的。在require.js 网站中有进一步的解释,它恰好使用了类似于 loader.js 的 loader 函数(define, require)。

就我而言,我只是确保在 jQuery 之后包含我的加载器,这样defines 就不会发生冲突。

于 2019-03-15T01:31:20.537 回答
0

我曾尝试按标签创建脚本,但得到警报:'只能有一个匿名定义'所以我只是覆盖它:

        this.temp_define = window['define'];
        head.appendChild(loaders);
        window['define'] = undefined;
于 2021-02-07T05:49:15.240 回答