2017-02-16 44 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