tempus-dominus无法检测到力矩导入

时间:2019-11-20 07:49:09

标签: javascript symfony webpack tempus-dominus-datetimepicker

我知道关于momenttempudominus-bootstrap-4会有很多问题,但是大多数情况下,这与用户错误有关,而我没有找到我的参考...

所以我正在使用symfony框架和webpack-encore捆绑包。我想将tempusdominus添加到文件event.js中以使用dateTimePicker

//../assets/js/app.js

import $ from 'jquery';
import 'bootstrap';
import moment from 'moment';
import 'tempusdominus-bootstrap-4';

$(function () {
    //some datepicker
});

刷新页面时出现以下错误

  

错误:Tempus Dominus Bootstrap4要求moment.js。在Tempus Dominus Bootstrap4的JavaScript之前,必须包含Moment.js。

从这里

// ../tempusdominus-bootstrap-4.js

if (typeof moment === 'undefined') {
  throw new Error('Tempus Dominus Bootstrap4\'s requires moment.js. Moment.js must be included before Tempus Dominus Bootstrap4\'s JavaScript.');
}

因此,显然我的矩变量未定义。我更改了app.js文件以在控制台中呈现时刻

//../assets/js/app.js

import $ from 'jquery';
import 'bootstrap';
import moment from 'moment';
//import 'tempusdominus-bootstrap-4';

$(function () {
   console.log("type of moment = "+ typeof(moment));
});

获得以下答案:

  

力矩类型=函数

moment已定义,那么为什么tempusDominus没有检测到它?

1 个答案:

答案 0 :(得分:0)

答案来自github仓库here

我在此处复制邮件:

您将moment模块导入到webpack捆绑的JS文件中。 导入的moment实例在运行时可用(这就是为什么console.log可以使用),但是对于依赖全局对象来使用的非模块库(例如tempusdominus)来说,全局实例不可用它。

使用@symfony/webpack-encore,您可以使用Encore的.autoProvideVariables()方法轻松提供全局变量:

Encore
    .autoProvideVariables({
        // Update those to your needs
        $: 'jquery',
        moment: 'moment'
    })
;

More informations in the Doc