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

Sau*_*rma 9 javascript amd visual-studio-monaco monaco-editor

我正在使用 loader.js 创建摩纳哥编辑器,但在控制台中出现两次错误“每个脚本文件只能有一个匿名定义调用”。

<script src="/monaco-editor/min/vs/loader.js"></script>
Run Code Online (Sandbox Code Playgroud)

创建编辑器的代码

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'
    });
 });
Run Code Online (Sandbox Code Playgroud)

我尝试搜索该问题并找到以下相关答案:

您正在加载的某些代码正在使用匿名模块 ID 调用定义。你可以:

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

在 AMD 加载程序之前加载该代码(即定义对该代码段不可用)

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

尝试取消设置define.jquery,据我所知jquery可能会在定义函数上检查它

这个页面已经有很多 jquery 了,我之所以理解这一点是因为 jQuery。请帮助一些人通过例子让我理解。谢谢

小智 2

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

在 AMD 加载程序之前加载该代码(即定义对该代码段不可用)

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

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