2017-07-18 37 views
0

不知何故在Docker镜像重建后,我开始遇到javascript时区问题。它曾经工作过,但在Docker镜像更新之后,不知何故,生成的Date对象不再遵守TZ设置。因此,我们的时区依赖日期字符串格式测试失败。Javascript日期在Karma测试中给出错误时区

# in the tests 
console.log(new Date("2016-04-01T00:00:00.000000+00:00")); 
// It is very strange it says (Asia) at the end. 
// In fact, it will say whatever I put in TZ 
Fri Apr 01 2016 00:00:00 GMT+0000 (Asia) 

# in Chrome developer tool 
console.log(new Date()); 
Fri Apr 01 2016 08:00:00 GMT+0800 (CST) 

gulpfile.js

gulp.task('test', ['_set_tpe_timezone'], runKarmaWebpackTests); 
gulp.task('_set_tpe_timezone', function() { 
    gutil.log('Setting timezone TZ = Asia/Taipei'); 
    process.env.TZ = 'Asia/Taipei'; 
    return; 
}); 

我使用以下设置运行JavaScript测试:

  • 咕嘟咕嘟+噶
  • 泊坞窗容器
  • 里面在gulpfile,在每次测试前执行以下设置 使用无头铬59
  • cat /etc/timezone = Etc/UTC
+0

什么是'Dockerfile'?用什么命令启动容器进行测试? –

+0

这将真正受益于[MCVE](https://stackoverflow.com/help/mcve)。以上是一个开始,但它不是可验证的。你能给我们一些我们可以重现问题的东西吗? –

+1

我可以告诉你的一件事是,当你在JS Date字符串中看到'(Asia)'时,这意味着'TZ'变量被解释为POSIX字符串,而不是IANA TZ标识符。我无法告诉你为什么*不能重现问题,但也许这会有所帮助。 –

回答

0

尽管根本原因尚未发现

  • ,溶液被发现。由于此问题之前未出现,但仅在docker system prune -a之后,基本映像才更新为最新版本,这引发了此错误。

    作为一种临时解决方案,我已经切换回旧的基本映像,并且它没有其他修改就像以前一样工作。我也会将此报告给Phusion团队。

    原Dockerfile

    FROM phusion/baseimage 
    ... 
    

    新Dockerfile

    FROM phusion/baseimage:0.9.21 
    ... 
    
  • 相关问题