vue3.0 异步调用腾讯地图在打包的时候 提示 is not defined怎么办?

具体是这么引入的

  methods: {
    loadMap() {
      return new Promise(function(resolve, reject) {
        window.init = function() {
          resolve(qq);
        };
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "https://map.qq.com/api/js?v=2.exp&callback=init";
        script.onerror = reject;
        document.head.appendChild(script);
      });
    },
    init() {
      var mapLatlng = new qq.maps.LatLng(39.916527, 116.397128);
      var mapOptions = {
        center: mapLatlng,
        zoom: 9
      };
      var mapId = document.getElementById(this.idName);
      var mapQQ = new qq.maps.Map(mapId, mapOptions);
    }
  },
created() {
    var self = this;
    this.loadMap().then(function() {
      self.init();
    });
  }

这样引入 使用上没有问题 但是在打包时候会提示'qq' is not defined
网上有看到类似这样的解决方法, 但是vue cli 3.0 只有vue.config.js文件配置。不太会。
clipboard.png

阅读 9.3k
2 个回答

我没有配置,用了另一个解决方案:

在所有出现 qq 的地方多换成: window.qq

我试了本地和 build 在 3 版本下面都是好的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题