tempus-dominus 未检测到力矩导入

tempus-dominus doesn't detect moment import

我知道有很多关于 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
});

当我刷新页面时出现以下错误

Error: Tempus Dominus Bootstrap4's requires moment.js. Moment.js must be included before Tempus Dominus Bootstrap4's JavaScript.

从这里开始

// ../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));
});

得到以下答案:

type of moment = function

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

答案来自 github 回购 here

我在这里复制消息:

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

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

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

More informations in the Doc