Javascript Date дает неверный часовой пояс в тесте кармы
Каким-то образом после перестроения образа Docker у меня начались проблемы с часовым поясом javascript. Раньше он работал, но после обновления образа Docker каким-то образом результирующий объект Date больше не подчиняется настройке 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
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:
- Глоток + карма
- внутри контейнера Docker
- В gulpfile выполните следующие настройки перед каждым тестом
process.env.TZ = 'Asia/Taipei';
- используя безголовый Chrome 59
cat /etc/timezone
знак равноEtc/UTC
1 ответ
Хотя первопричина еще не обнаружена, решение найдено. Так как эта проблема не появилась раньше, а только после docker system prune -a
, базовое изображение было обновлено до последней версии, в которой представлена эта ошибка.
В качестве временного решения я вернулся к старому базовому образу, и он работает, как и раньше, без других модификаций. Я также собираюсь сообщить об этом команде фьюжн.
оригинальный Dockerfile
FROM phusion/baseimage
...
новый Dockerfile
FROM phusion/baseimage:0.9.21
...