在库中调用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
。为isValid
和DateTime
调用Duration
返回true。
如果我以与应用程序完全相同的方式初始化DateTime
和Duration
,则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"
。
答案 0 :(得分:1)
发生这种情况的原因是由于在开发时本地链接了库。因此,即使app和lib具有相同的luxon版本,它们都具有单独的模块。由于此处使用了instanceof
条检查,导致luxon库损坏。