Javascript 如何通过从第三方脚本导入正确调用js模块

Javascript 如何通过从第三方脚本导入正确调用js模块,javascript,barbajs,Javascript,Barbajs,我有一个很奇怪的问题,我无法解释 我使用的是一个非常棒的页面转换和一个可爱的旋转木马。问题是,它使您的页面成为SPA,因此您必须重新编写init脚本。说实话真让人痛苦 在我的barba.js文件中,我调用顶部的swiper旋转木马 import barba from "@barba/core"; import { homeCarousel } from './swiper.js' function initCarousel() { if (document.quer

我有一个很奇怪的问题,我无法解释

我使用的是一个非常棒的页面转换和一个可爱的旋转木马。问题是,它使您的页面成为SPA,因此您必须重新编写
init
脚本。说实话真让人痛苦

在我的barba.js文件中,我调用顶部的swiper旋转木马

import barba from "@barba/core";    
import { homeCarousel } from './swiper.js'

function initCarousel() {
if (document.querySelector('.swiper-container') != null) {
    homeCarousel();
  }
}

barba.init({
  sync: true,
  preventRunning: true,
  views: [{
    namespace: 'main',
    afterEnter() {
      setTimeout(() => {
        initCarousel();
      }, 550);
    }
  }],
  transitions: [{
    async leave() {
      done();
    },

    async enter() {
      newPage();
    },
  }]
})
然后在我的swiper.js文件中

import Swiper from 'swiper';
import 'swiper/css/swiper.css';

const homeCarousel = () => {
  var hs = new Swiper('.home__carousel', {
    init: false,
  });

  hs.init();
}

homeCarousel();

export { homeCarousel }
这一切正常。但我有另一个页面上没有旋转木马,因此
。swiper container
将返回null。这也很好,但因为我是在barba.js的顶端导入的

import { homeCarousel } from './swiper.js'
当页面刷新从而导致严重错误时,将调用它

无法读取未定义的属性“push”

当路由改变时,没有可怕的控制台错误

我想在理想情况下,我会将此导入语句放在if(document.querySelector('.swiper container')!=null)的
中,但导入必须是顶级的


有什么建议吗?我正要把电脑从窗口拿出来。这可能是一件好事。

当您将swiper.js作为库使用时,它应该只包含API而没有副作用。
在这种情况下,请删除
homeCarousel()
从swiper.js中

为什么在swiper.js中调用homeCarousel?看起来它是一个库,所以它应该只提供API。@Orphy噢,我的天哪。你太棒了。非常感谢。请回答这个问题,我会接受的。