【问题标题】:MeteorJS replacing packages with NPM failuresMeteorJS 用 NPM 故障替换包
【发布时间】:2016-12-22 12:17:01
【问题描述】:

我有一个在 MeteorJS 中构建的应用程序,它是在 1.2 版上构建的。我现在已经升级到 1.4.0.1 并开始将一些依赖项从 Atmosphere 包转移到 NPM。有些工作得很好,有些头疼,但那些是顶级的。我现在在让其他人工作时遇到问题,例如 Bootstrap 日期时间选择器。我已经删除了这个包:

meteor remove tsega:meteor-bootstrap3-datetimepicker

并添加了 NPM 等效项:

npm install --save eonasdan-bootstrap-datetimepicker

在我的addEvent.js 客户端模板文件的顶部有这个:

import $ from 'jquery';
import moment from 'moment';
import dateTimePicker from 'eonasdan-bootstrap-datetimepicker';

然后在onRendered 块中进一步向下:

/* Set instance var */

const instance = this;

/* Date/time picker start */

instance.$('#addDateStart').datetimepicker({
    icons: {
        time: 'fa fa-clock-o',
        date: 'fa fa-calendar',
        up: 'fa fa-chevron-up',
        down: 'fa fa-chevron-down',
        previous: 'fa fa-chevron-left',
        next: 'fa fa-chevron-right',
        today: 'fa fa-dot-circle-o'
    },
    format: 'Do MMMM YYYY HH:mm',
    sideBySide: true
});

/* Date/time picker end */

instance.$('#addDateEnd').datetimepicker({
    icons: {
        time: 'fa fa-clock-o',
        date: 'fa fa-calendar',
        up: 'fa fa-chevron-up',
        down: 'fa fa-chevron-down',
        previous: 'fa fa-chevron-left',
        next: 'fa fa-chevron-right',
        today: 'fa fa-dot-circle-o'
    },
    useCurrent: false,
    format: 'Do MMMM YYYY HH:mm',
    sideBySide: true
});

我在浏览器控制台中遇到错误:

Exception from Tracker afterFlush function:
debug.js:41TypeError: instance.$(...).datetimepicker is not a function
at .<anonymous> (addEvent.js:84)
at template.js:119
at Function.Template._withTemplateInstanceFunc (template.js:465)
at fireCallbacks (template.js:115)
at .<anonymous> (template.js:208)
at view.js:107
at Object.Blaze._withCurrentView (view.js:538)
at view.js:106
at Object.Tracker._runFlush (tracker.js:511)
at onGlobalMessage (setimmediate.js:102)

我已经尝试了各种方法来使其正常工作。不知道我做错了什么或包裹是否有问题。

【问题讨论】:

    标签: meteor npm ecmascript-6 undefined-reference es6-module-loader


    【解决方案1】:

    查看datetimepicker 是否是 jQuery 构造函数的一部分

    $.prototype.hasOwnProperty("datetimepicker");
    

    如果没有,看看是否在全局对象上:

    instance.hasOwnProperty("datetimepicker");
    

    如果是这样,请将其添加到 jQuery 原型中:

    $.prototype.datetimepicker = instance.datetimepicker;
    

    参考文献

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多