在库中调用“ Interval.after”时,Luxon返回无效间隔

时间:2018-10-06 13:40:23

标签: typescript luxon

在库中调用Interval.after方法时,我面临着Luxon的怪异问题。

const interval = Interval.after(dateTime, duration);

以下日志来自应用程序DateTime__Duration,第二行记录了Interval.after的结果:

1535806800000__PT330M
[2018-09-01T16:00:00.000+03:00 – 2018-09-01T21:30:00.000+03:00)

但是,如果我将这些值传递给库方法并在那里观察日志:

1535806800000__PT330M
Invalid Interval

原因是invalid endpoints。为isValidDateTime调用Duration返回true。

如果我以与应用程序完全相同的方式初始化DateTimeDuration,则Interval.after在lib内部运行。

const interval2 = Interval.after(DateTime.fromISO('2018-09-01T16:00:00.000+03:00',
    {zone: 'Europe/Helsinki'}), Duration.fromObject({ minutes: 330 }));

两个调用都使用相同的对象,但是Interval.after仅在应用程序内部起作用。知道是什么原因造成的吗?

更新

这似乎与DateTime有关。即使luxon版本相同,应用程序和库中的行为是否也会有所不同?据我了解,luxon没有依赖性。

更新2

我设法获得了该设置的复制版本。可以从http://www.filedropper.com/luxon

下载app和lib源代码

为了将lib本地链接到应用程序中,我在lib中使用了yarn link,然后在应用程序中使用了yarn link "luxon-test-lib"

1 个答案:

答案 0 :(得分:1)

发生这种情况的原因是由于在开发时本地链接了库。因此,即使app和lib具有相同的luxon版本,它们都具有单独的模块。由于此处使用了instanceof条检查,导致luxon库损坏。