首页 > 解决方案 > tempus-dominus 未检测到时刻导入

问题描述

我知道有很多问题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。Moment.js 必须在 Tempus Dominus Bootstrap4 的 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));
});

得到以下答案:

力矩类型 = 函数

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

标签: javascriptsymfonywebpacktempus-dominus-datetimepicker

解决方案


答案来自这里的github repo

我在这里复制消息:

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

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

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

文档中的更多信息


推荐阅读