首页 > 解决方案 > 每个脚本文件只能有一个匿名定义调用

问题描述

我正在使用 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。请帮助一些人让我通过例子来理解。谢谢

标签: javascriptamdmonaco-editorvisual-studio-monaco

解决方案


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

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

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

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


推荐阅读