首页 > 解决方案 > 如何在 magento 2 中加载外部 CDN (seats.io)?

问题描述

我正在尝试在 magento 2中实现https://docs.seats.io/docs/tutorial-show-the-floor-plan-on-your-page

我在主页中添加了此代码

<div id="chart"></div>
<script>
        require(['jquery', 'seatsio'], function($){
            $(document).ready(function(){
                new seatsio.SeatingChart({
                    divId: 'chart',
                    publicKey: 'xxxx',
                    event: 'xxxx'
                }).render();
            });
        });
</script>

在 requirejs-config.js 我添加这个来加载 cdn :

paths: {
    'seatsio': 'https://cdn.seatsio.net/chart'

shim: {seatsio: ['jquery']}

在 google chrome devtools 中加载了 CDN,但我有这个错误:

未捕获的 ReferenceError:未定义席位

你知道我做错了什么吗?

标签: javascriptrequirejsmagento2

解决方案


根据chart.js代码,seatsio通过requireJS加载库时没有设置全局变量,require.amd是一个对象。

RequireJS 将每个依赖项的导出值提供给模块函数。您可以接受导出seatsio为第二个参数,如以下代码所示。

<div id="chart"></div>
<script>
        require(['jquery', 'seatsio'], function($, seatsio /* add this param */){
            $(document).ready(function(){
                new seatsio.SeatingChart({
                    divId: 'chart',
                    publicKey: 'xxxx',
                    event: 'xxxx'
                }).render();
            });
        });
</script>

推荐阅读