使用webpack (Babel/ES6)导入moment-timzone和moment-range
Importing moment-timzone and moment-range with webpack (Babel/ES6)
我使用Webpack与Babel加载器。按照ES6标准编写。我用npm安装了moment-timezone和moment-range。
这两个都是moment.js插件,它们都依赖于moment包,并导出一个单独的moment库。所以当我输入
import moment from 'moment-timezone';
import moment2 from 'moment-range';
则得到对时刻的两个单独引用。
我如何设置它,以便我可以使用时刻与时区和范围函数?
谢谢!
Docs显示CommonJS语法:
var moment = require('moment');
require('moment-range');
require('moment-timezone');
// moment() now has both range and timezone plugin features
在ES6: import moment from 'moment';
import 'moment-range';
import 'moment-timezone';
编辑
既然moment-timezone
没有扩展现有的import,但是扩展了moment
本身,那么这个呢?
import moment from 'moment-timezone';
import 'moment-range';
我在不同的软件包中遇到了这个问题:moment-timezone
和frozen-moment
。祸根是在树的不同部分有两个moment
依赖项。在我的例子中,我有moment
在node_modules
下面,也在frozen-moment
的node-modules
里面。这意味着moment-timezone
和frozen-moment
使用了不同的moment
实例。
检查您使用的软件包版本是否相互兼容,以便moment-range
不需要获取不同版本的moment
。当你正确设置它时,你应该可以这样做:
import moment from 'moment';
import momentTimezone from 'moment-timezone';
import momentRange from 'moment-range';
console.log(moment === momentTimezone === momentRange); // logs 'true'
请记住,这只是为了测试它是否正确设置,你应该像在glortho的回答中那样使用它:
import moment from 'moment';
import 'moment-timezone';
import 'moment-range';
以上所有的解决方案都不适合我,我不得不求助于这个:
import moment from 'moment';
window.moment = moment;
import {extendMoment} from 'moment-range';
extendMoment(window.moment);
我发现moment-range的默认实现非常丑陋,因为它只是扩展了moment对象,在我看来这有点"hacky"。
我是这样做的:
import { default as DateRange } from 'moment-range';
const myRange = new DateRange(x, y);
我用下面的代码导入moment-timezone
和moment-range
:
import Moment from 'moment-timezone';
import momentRange from 'moment-range';
const moment = momentRange.extendMoment(Moment);
我的项目使用webpack与ES6(相同的OP我认为),与React。我需要功能从时刻时区。在添加了moment
和moment-timezone
npm依赖项之后,下面的import语句就可以工作了:
import moment from 'moment-timezone';
允许我调用moment.tz.guess();
真正让我失望的是——仅仅添加导入并不能使moment
在我的浏览器的开发控制台上可用。在https://github.com/moment/moment/issues/2608的评论中,有人提到了这个代码片段,它使moment
在开发控制台可用:
window.moment = moment;
这对我有用
import * as moment from 'moment-timezone'
import * as momentRange from 'moment-range'
- 如何使用url加载程序在webpack中导入多个图像
- 如何将JSON数据导入我的ejs模板
- 如何将不可变的js导入angular 2(alpha)
- 将数据从javascript文件导入VB.Net页面
- 导入jQuery脚本获胜'我不处理html文件
- Moment/Jquery-一个简单时间线的愚蠢问题
- Datetime格式为Friendly Time.Moment JS输出错误
- javascript导入的最佳实践是什么
- 将CSV文件从URL导入Node.js
- 问题用moment JS制作一个简单的时间表
- 针对重复发生的事件,使用moment.js防止DST偏移
- 如何在moment.js中只比较日期
- Typescript导入导出的类会发出require(..),从而导致浏览器错误
- 如何将csv数据导入netsuite
- Django可以'不能在设置中导入ckeditor,但可以在shell中导入
- 可以合并或嵌套ES6导入
- 如何用moment.js列出两个日期之间的所有月份
- 如何使用npm在ES6中导入moment.js
- 为什么moment.tz的工作方式不同取决于导入方式
- 使用webpack (Babel/ES6)导入moment-timzone和moment-range