不同Node版本导致的Date构造函数问题及解决方法,webpack不同版本导致的promise不存在问题

今非昔比Node版本导致的Date构造函数难题及解决措施

2018/07/06 · JavaScript
· Date

原版的书文出处:
康建云   

近年来在包装时间接选举取组件的单元测试时,为了协会出Date对象,直接采纳了暗中同意Date构造函数。自个儿本地开发,测试均无问题,push远程后,有些小伙伴在本土跑测试用例时,却无力回天透过,具体报错如下:

xpj线路检测 1

因此截图音讯,可以先河判断由于Date构造函数再次回到了分歧日期导致,抱着奇异的姿态查阅个各样质地后,竟然发现2个小小的的日期构造函数里面不乏,常常本身写起来都以半途而废,没有深远摸底过。下边将详细介绍那个破案进度,防止各位看客后续重蹈覆辙。

那是多年来四个月写得最周到的著述了,用JS达成了一个拖拽排序,效果图如下:
xpj线路检测 2
一开头进入项目有了如此的拖拽完成想法,一点端倪没有,请先生兄说那样达成不容许。当时觉得很不满,打算用古板的点子去完毕。正思考守旧的主意,感觉日子足够,就回去了拖拽的想法上来。终于实现了。其实自身不是炫耀这么些(当然,感兴趣的话,能够QQ907087894联络本人,笔者会收拾德姆o上传出财富中央),小编想说的是下文。
就在自小编完结的还要,师姐帮另三个伙伴写了3个价值观方案的德姆o,他展开的是修改的排序。在他机器上演示的时候,当时就认为很感动,在他的鼠标滑动下,生搬硬套了1遍代码,瞧着长长的链式JS,顿生仰慕。当时就想,等档次结了,好好钻研他这一个。
xpj线路检测 3
三个月后,等来了,闲暇。缘于对JS的生疏,很费劲的勉强看懂了代码,运维的时候,飞来了贰只昆虫。移动的时候,一直提示无采取项。

那是近来5个月写得最全面包车型客车文章了,用JS达成了叁个拖拽排序,效果图如下:
xpj线路检测 4
一开头进入项目有了那样的拖拽完毕想法,一点端倪没有,请先生兄说那样完毕不大概。当时觉得很不满,打算用守旧的法子去实现。正思考古板的法子,感觉日子丰富,就赶回了拖拽的想法上来。终于完毕了。其实小编不是炫耀那些(当然,感兴趣的话,能够QQ907087894联络自个儿,作者会收拾德姆o上流传能源中央),小编想说的是下文。
就在自个儿达成的还要,师姐帮另一个小伙伴写了二个价值观方案的德姆o,他开始展览的是修改的排序。在他机器上演示的时候,当时就觉得很激动,在她的鼠标滑动下,一知半解了贰遍代码,看着长长的链式JS,顿生仰慕。当时就想,等连串结了,好好钻研他那个。
xpj线路检测 5
不同Node版本导致的Date构造函数问题及解决方法,webpack不同版本导致的promise不存在问题。三个月后,等来了,闲暇。缘于对JS的生疏,很讨厌的勉强看懂了代码,运维的时候,飞来了1只昆虫。移动的时候,一贯提示无采纳项。

事先使用的axios是基于promise的,然则IE并没有放置promise,所以要提早install二个promise插件:

题材排查

安分守己固定做法,出标题后先自个儿本地跑了三回测试用例,没有其余难点,早先就可以固定是支付条件难题。于是乎就看了下小伙伴nodejs版本号,版本号为6.10.0,而本人本地node版本号为10.3.0,于是在不一致nodejs命令行下直接实施如下测试用例。

JavaScript

const defaultDate = new Date(‘1995-12-17T03:24:00’);
console.log(defaultDate.toString());

1
2
3
const defaultDate = new Date(‘1995-12-17T03:24:00’);
 
console.log(defaultDate.toString());

实施结果,

Node 6.10.0:

JavaScript

> const defaultDate = new Date(‘一九九二-12-17T03:24:00’) >
console.log(defaultDate.toString()) Sun Dec 17 一九九四 11:24:00 奇霉素T
+0800(中中原人民共和国家标准准时间)

1
2
3
4
> const defaultDate = new Date(‘1995-12-17T03:24:00’)
> console.log(defaultDate.toString())
 
Sun Dec 17 1995 11:24:00 GMT +0800(中国标准时间)

Node 10.3.0:

JavaScript

const defaultDate = new Date(‘一九九三-12-17T03:24:00’) undefined
console.log(defaultDatae.toString()) Sun Dec 17 一九九二 03:24:00 培洛霉素T+0800
(中夏族民共和国标准时间)

1
2
3
4
const defaultDate = new Date(‘1995-12-17T03:24:00’)
undefined
console.log(defaultDatae.toString())
Sun Dec 17 1995 03:24:00 GMT+0800 (中国标准时间)

xpj线路检测,到此基本承认了该难题是由Nodejs环境导致的标题。不过为啥会有那般的难点呢,跟着笔者继续深切探秘下Date构造函数。

复制代码 代码如下:

复制代码 代码如下:

npm install promise

深深解析

构成难点,提炼出以下小示例,以供深远剖析Date构造函数:

JavaScript

var d1 = new Date(“1995/12/17 00:00:00”); var d2 = new
Date(“1995-12-17T00:00:00”); var d3 = new Date(“1995-12-17T00:00:00Z”);
console.log(d1.toString()); console.log(d2.toString());
console.log(d3.toString());

1
2
3
4
5
6
var d1 = new Date("1995/12/17 00:00:00");  
var d2 = new Date("1995-12-17T00:00:00");
var d3 = new Date("1995-12-17T00:00:00Z");
console.log(d1.toString());
console.log(d2.toString());
console.log(d3.toString());

nodejs 10.3.0实施结果:

JavaScript

> console.log(d1.toString()); Sun Dec 17 1994 00:00:00 GMT+0800
(中华夏族民共和国家标准准时间) > console.log(d2.toString()); Sun Dec 17 一九九三 00:00:00
奇霉素T+0800 (中中原人民共和国家标准准时间) > console.log(d3.toString()); Sun Dec 17 一九九一08:00:00 威他霉素T+0800 (中华夏族民共和国家标准准时间)

1
2
3
4
5
6
> console.log(d1.toString());
Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
> console.log(d2.toString());
Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
> console.log(d3.toString());
Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)

nodejs 6.10.0实践结果:

JavaScript

> console.log(d1.toString()); Sun Dec 17 一九九五 00:00:00 核糖霉素T+0800
(中华夏族民共和国家标准准时间) > console.log(d2.toString()); Sun Dec 17 1995 08:00:00
威他霉素T+0800 (中中原人民共和国家标准准时间) > console.log(d3.toString()); Sun Dec 17 一九九三08:00:00 阿奇霉素T+0800 (中国家标准准时间)

1
2
3
4
5
6
> console.log(d1.toString());
Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
> console.log(d2.toString());
Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)
> console.log(d3.toString());
Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)

干什么在差别条件下Nodejs的分析行为不等同吗?那就要提下JS中关系到时刻的相关标准了。

for(var j = 0; j < div_count; j++){ 
           
if(($(“#eva_div_all”).children().eq(j).children().children().eq(0).attr(‘checked’))==’checked’){ 
                var valid_checked =
$(“#eva_div_all”).children().eq(j).children().children().eq(0).attr(‘id’); 
               
if(valid_checked==checked_name){alert(alert_des);return;} 
                /* 对调 */ 
                var temp =
$(“#eva_div_all”).children().eq(j).attr(‘id’); 
                var temp_html = $(“#”+temp).html(); 
                var before_temp =
$(“#eva_div_all”).children().eq(j+num).attr(‘id’); 
                var before_temp_html = $(“#”+before_temp).html(); 
                $(“#”+temp).html(”); 
                $(“#”+before_temp).html(”); 
                $(“#”+temp).html(before_temp_html); 
                $(“#”+before_temp).html(temp_html); 
                checked = ‘true’; 
                new_order(); 
            } 
        } 
        if(checked==’false’){ 
            alert(‘无选取项!!’); 
        }

for(var j = 0; j < div_count; j++){ 
           
if(($(“#eva_div_all”).children().eq(j).children().children().eq(0).attr(‘checked’))==’checked’){ 
                var valid_checked =
$(“#eva_div_all”).children().eq(j).children().children().eq(0).attr(‘id’); 
               
if(valid_checked==checked_name){alert(alert_des);return;} 
                /* 对调 */ 
                var temp =
$(“#eva_div_all”).children().eq(j).attr(‘id’); 
                var temp_html = $(“#”+temp).html(); 
                var before_temp =
$(“#eva_div_all”).children().eq(j+num).attr(‘id’); 
                var before_temp_html = $(“#”+before_temp).html(); 
                $(“#”+temp).html(”); 
                $(“#”+before_temp).html(”); 
                $(“#”+temp).html(before_temp_html); 
                $(“#”+before_temp).html(temp_html); 
                checked = ‘true’; 
                new_order(); 
            } 
        } 
        if(checked==’false’){ 
            alert(‘无选取项!!’); 
        }

import Promise from ‘promise’;
if (!window.Promise) {
window.Promise = Promise;
}

相关文章