2017-02-16 84 views
0

我使用gulp + browserify捆綁我的JavaScript文件。 我npm install select2 --saveBrowserify包js,但需要(「jquery-datetimepicker」)不起作用

require("select2"); 

module.exports = { 
    init: function() { 
     $('#datetime-start').datetimepicker({ 
      dayOfWeekStart : 1, 
      lang:'en', 
      disabledDates:['1986/01/08','1986/01/09','1986/01/10'], 
      startDate: '1986/01/05' 
     }); 
    } 
} 

的代碼塊效果很好,但後來我npm install jquery-datetimepicker --save。 後來我又寫一些代碼:

require("jquery-datetimepicker"); 

module.exports = { 
    init: function() { 
     $('#datetime-start').datetimepicker({}) 
    } 
} 

browserify包是全成,但是當我打開瀏覽器,有一個錯誤:

$(...).datetimepicker is not a function.

可能是我想念的東西。

回答

0

jquery-datetimepicker導出其工廠函數接收jquery作爲參數來填充它(請參閱here),但似乎覆蓋jquery-mousewheel exports object。肯定是它的一個問題,並在問題#412#496中討論。雖然存在得到它的工作解決方法:

第一:

npm install jquery --save 
npm install jquery-datetimepicker --save 
npm install jquery-mousewheel --save 
npm install https://github.com/kartik-v/php-date-formatter.git#closure --save 

注:php-date-formatter#closure分支安裝作爲主支不支持UMD模式。

則:

var $ = require('jquery'); 
DateFormatter = require('php-date-formatter')($); 
require('jquery-mousewheel/jquery.mousewheel.js')($); 
require('jquery-datetimepicker/jquery.datetimepicker.js')($); 

module.exports = { 
    init: function() { 
     $('#datetime-start').datetimepicker({}) 
    } 
} 
+0

對不起,它仍然無法正常工作。你認爲我應該添加一些更多的配置package.json的browserify-shim – kotepillar

+0

我認爲require(「jquery-datetimepicker」)($)仍然沒有將datetimepicker附加到window. $,只是$ variable。 – kotepillar

+0

看起來'jquery-datetimepicker'用'jquery-mousewheel'的'exports'對象覆蓋了它的'exports'對象。當然這是一個問題,並在[#412](https://github.com/xdan/datetimepicker/issues/412)和[#496](https://github.com/xdan/datetimepicker/issues/496)。而最有前途的解決方案是由@wankdanker提出的。答案已更新。 – dNitro