vue引入第三方zepto.js库报错

1 篇文章 0 订阅

报错:

 TypeError: Cannot read property 'createElement' of undefined

原因:

只使用了 AMD 规范的模块导出方法 define,没有用 CommonJs 规范的方法 module.exports 来导出模块,不过这不是造成报错的原因。

解决办法:
1、安装辅助插件库

npm i -D script-loader exports-loader

2、webpack.config.js配置

// webpack.config
{
  // ...
  module: {
    loaders: [{
      test: require.resolve('zepto'),
      loader: 'exports-loader?window.Zepto!script-loader'
    }]
  }
}

3、就可以直接引用啦

// entry.js
import $ from 'zepto'

$(function () {
  // ...
})

4、如果需要全局使用,则可以配置

var webpackPlugins = [
    new webpack.ProvidePlugin({
      Vue: 'vue',
      nx: 'next-js-core2',
      $: 'zepto',
    }),
    new webpack.NoErrorsPlugin(),
    // split vendor js into its own file,
    new ExtractTextPlugin('[name]-[contenthash:5].css')
  ];

5、总结

由于我们用 npm 下载的模块没有模块化,因此我们要使用:

script-loader 全局上下文环境中执行模块 JS 文件;
exports-loader 添加 module.exports 来主动暴露需要的对象,使其模块化。
这样的方法适用于所有的库,不过最好的解决办法是从根本上让这些让这些库支持模块化。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值