Javascript Magento 2中未定义jQuery

Javascript Magento 2中未定义jQuery,javascript,jquery,html,magento2,Javascript,Jquery,Html,Magento2,当我尝试加载自定义js库时,我正在自定义主题中创建一个require.js文件 代码JS:(requirejs config.JS) 我在中加载require.js和require config.js 编码XML:(default.XML) 我在下图中发布了项目的加载顺序 我不明白为什么会发生错误,jQuery在demo.js 你对这个问题有什么建议吗?如何解决 谢谢 理想情况下,您加载的脚本将是通过调用define()定义的模块。但是,您可能需要使用一些传统/传统的“浏览器全局”脚本,这些脚

当我尝试加载自定义js
库时,我正在自定义主题中创建一个
require.js
文件

代码JS:(requirejs config.JS)

我在
中加载
require.js
require config.js

编码XML:(default.XML)

我在下图中发布了项目的加载顺序

我不明白为什么会发生错误,
jQuery
demo.js

你对这个问题有什么建议吗?如何解决


谢谢

理想情况下,您加载的脚本将是通过调用define()定义的模块。但是,您可能需要使用一些传统/传统的“浏览器全局”脚本,这些脚本不通过define()表达它们的依赖关系。对于这些,您可以使用垫片配置。正确地表达它们的依赖关系。 您需要在require.js文件的shim config中添加jQuery依赖项,如下所示:

 var config = {
    map: {
        '*': {
            'demo': 'js/vendor/demo/demo'
        }
    },
   shim: {
        demo: {
            deps: ['jquery']
        }
    }
};

您需要添加demo.js中的代码,以便任何人进行调试。虽然jquery是在demo.js之前加载的,但它可以通过require.js和它的
require([…],function(…){})获得,而不是全局。这可能足以让你自己用谷歌搜索一下。
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <update handle="default_head_blocks"/>
    <body>
        <block name="require.js" class="Magento\Framework\View\Element\Template" template="Magento_Theme::page/js/require_js.phtml" />
    </body>
</page>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <meta name="format-detection" content="telephone=no"/>
        <link src="requirejs/require.js"/>
        <css src="css/styles-m.css"/>
        <css src="css/styles-l.css" media="screen and (min-width: 768px)"/>
        <css src="css/print.css" media="print"/>
    </head>

    <body>
        <referenceContainer name="after.body.start">
            <block class="Magento\RequireJs\Block\Html\Head\Config" name="requirejs-config"/>
        </referenceContainer>
    </body>
</page>
<script>
    var BASE_URL = '<?= $block->escapeUrl($block->getBaseUrl()) ?>';
    var require = {
        "baseUrl": "<?= $block->escapeUrl($block->getViewFileUrl('/')) ?>"
    };
</script>
ReferenceError: jQuery is not defined
 var config = {
    map: {
        '*': {
            'demo': 'js/vendor/demo/demo'
        }
    },
   shim: {
        demo: {
            deps: ['jquery']
        }
    }
};