1. 程式人生 > 實用技巧 >vue-cli3專案引用zepto報$不存在怎麼處理

vue-cli3專案引用zepto報$不存在怎麼處理

異常描述:

查了下,是這個原因導致的:

只使用了 AMD 規範的模組匯出方法 define,沒有用 CommonJs 規範的方法 module.exports 來匯出模組,不過這不是造成報錯的原因。

操作步驟:

第一步:安裝 script-loader exports-loader:

npm install script-loader exports-loader --save-dev

第二步:對專案進行配置以支援zepto:

專案根目錄下建立vue.config.js檔案,編寫以下程式碼:

 1 /**
 2  * 專案配置檔案
 3  * vue.config.js
 4  */
 5
module.exports = { 6 chainWebpack: config => { 7 //1.專案通用標題(如果需要就配置,不需要這部分可以刪除) 8 config 9 .plugin('html') 10 .tap((args) => { 11 args[0].title = 'vue-cli3'; 12 return args; 13 }); 14 //2.支援zepto的配置 15 config.module 16 .rule('zepto') 17 .test(require.resolve('zepto'))
18 .use('exports') 19 .loader('exports-loader?window.Zepto') 20 .end() 21 .use('script') 22 .loader('script-loader') 23 .end() 24 //3.釋放$(index.html中引用需要,如果是main.js中匯入則不需要) 25 config 26 .plugin('env') 27 .use(require.resolve('webpack/lib/ProvidePlugin'), [{
28 $: 'zepto' 29 }]) 30 } 31 }

如上,第二項配置是支援zepto的主要配置,第三項配置是針對index.html中直接引用zepto.js的,如果是main.js中引入,那麼不需要這個配置了。

第三步,安裝zepto:

有兩種方式:

index.html直接引用zepto.js檔案

<script src="<%= BASE_URL %>js/zepto.min.js" type="text/javascript"></script>

vue.config.js的配置如下:

/**
 * 專案配置檔案
 * vue.config.js
 */
module.exports = {
  chainWebpack: config => {   
    //支援zepto的配置
    config.module
      .rule('zepto')
      .test(require.resolve('zepto'))
      .use('exports')
      .loader('exports-loader?window.Zepto')
      .end()
      .use('script')
      .loader('script-loader')
      .end()
    //釋放$(index.html中引用需要,如果是main.js中匯入則不需要)
    config
      .plugin('env')
      .use(require.resolve('webpack/lib/ProvidePlugin'), [{
        $: 'zepto'
      }])
  }
}

2.使用npm安裝zepto,然後main.js中引入:

npm install zepto --save

main.js:

import $ from 'zepto'

vue.config.js配置如下:

/**
 * 專案配置檔案
 * vue.config.js
 */
module.exports = {
  chainWebpack: config => {
    //支援zepto的配置
    config.module
      .rule('zepto')
      .test(require.resolve('zepto'))
      .use('exports')
      .loader('exports-loader?window.Zepto')
      .end()
      .use('script')
      .loader('script-loader')
      .end()
    //釋放$(index.html中引用需要,如果是main.js中匯入則不需要)
    config
      .plugin('env')
      .use(require.resolve('webpack/lib/ProvidePlugin'), [{
        $: 'zepto'
      }])
  }
}

然後,就可以愉快的使用zepto了。

注意事項:

上面兩種方式安裝方式都可以,但是不管用哪種方式,都是需要安裝exports-loaderscript-loader這兩個依賴元件,且要配置 vue.config.js 檔案。