Vue2打包umd模块后,出现做链接引入出现xxx is not defined?

操作

这边做的包名称是dkgs-sdk,在主应用中引入:

import Dk from 'dkgs-sdk'
Vue.use(Dk)

打包的时候配置externals做排除,不打到包里面

const externals = {
  vue: 'Vue',
  'vue-router': 'VueRouter',
  vuex: 'Vuex',
  axios: 'axios',
  'element-ui': 'ELEMENT',
  'dkgs-sdk': 'dkgs-sdk'
}
...
 config.externals(externals)

这样后的确不会将模块打入包内
并在项目中用链接引入

   '/assets/lib/addon/dkgs-sdk.umd.min.js'

出现问题:

这里会提示dkgs不存在
image.png

image.png
跟踪发现这里出现了问题,不知道为啥会这样去引入,于是我在前面写了个

var    dkgs = '';

又出现
image.png
于是又新增

var dkgs = '';
var sdk = '';

就可以正常打开了
这是什么问题呢?需要如何去解决或者优化

阅读 2.5k
1 个回答

要看你sdk里定义的什么全局变量名。比如 jQuery:

externals = {
  jquery: '$',
  '项目中引用的包名':'external里定义的全局变量'
}

可以试试 'dkgs-sdk': 'dkgs'。dkgs是你sdk里定义的全局变量名,如果还是报错你就只能排查sdk问题,比如随便建一个页面引入看看定义的全局变量名是什么

更新: 突然想起来变量的命名是不能带 - 横杠的,你的 sdk 暴露出来模块应该是定义在 window 对象上的,应该使用 'dkgs-sdk': 'window dkgs-sdk'

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