Javascript日期在Karma测试中给出了错误的时区

Javascript日期在Karma测试中给出了错误的时区,javascript,docker,gulp,timezone,phusion,Javascript,Docker,Gulp,Timezone,Phusion,不知何故,在Docker映像重建之后,我开始遇到javascript时区问题。它以前可以工作,但在Docker图像更新之后,不知何故,生成的日期对象不再遵守TZ设置。结果,我们的时区依赖日期字符串格式化测试失败 # 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 s

不知何故,在Docker映像重建之后,我开始遇到javascript时区问题。它以前可以工作,但在Docker图像更新之后,不知何故,生成的日期对象不再遵守TZ设置。结果,我们的时区依赖日期字符串格式化测试失败

# 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 我使用以下设置运行javascript测试:

  • 狼吞虎咽+因果报应
  • 在Docker容器内
  • 在gulpfile中,在每次测试前执行以下设置
    process.env.TZ='亚洲/台北'
  • 使用无头镀铬59
  • cat/etc/timezone
    =
    etc/UTC

虽然根本原因尚未发现,但已找到解决方案。因为这个问题以前没有出现过,只是在docker system prune-a之后才出现,所以基本映像被更新为最新版本,这就引入了这个bug

作为一个临时解决方案,我已经切换回旧的基础图像,它的工作原理与以前一样,没有其他修改。我还将向phusion团队报告这一点

原始Dockerfile 新Dockerfile
什么是
Dockerfile
?什么命令用于启动容器进行测试?这将真正受益于。以上是一个开始,但无法验证。你能给我们一些重现问题的方法吗?我可以告诉你的一件事是,当你在JS日期字符串中看到
(亚洲)
,这意味着
TZ
变量被解释为POSIX字符串,而不是IANA TZ标识符。我不能告诉你为什么不能重现这个问题,但也许这会有所帮助。谢谢你的建议。在试图获得可复制MCVE的过程中,我发现问题出在我使用的基础图像上。我将发布此问题的答案,并将错误报告发送给phusion/baseimage团队。
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;
});
FROM phusion/baseimage
...
FROM phusion/baseimage:0.9.21
...