2017-07-18 64 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 
    ... 
    
  • 相關問題