Chrome Ver.45で発生するTableau Serverのワークブックのビューエラーの対策方法

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Chrome Ver.45からTableau Serverのワークブックのビューを参照すると、以下のエラーが表示されビューが見られない障害の報告を受けました。現象と対策方法について解説します。

Tableau社のKB(ナレッジベース)でアナウンスされています。

Error "Uncaught SyntaxError: Unexpected identifier" When Viewing Workbook in Chrome

原因は、Chrome Ver.45のアップデートに伴い、Tableau ServerからダウンロードしたJavaScriptファイルがChrome Ver.45で正しく動作しないためです。なお、TableauとGoogleは、将来のリリースで問題の解決に向けて取り組んでいるそうです。

現象

Chrome Ver.45からTableau Serverのワークブックのビューを表示しようとするとエラーメッセージが表示され、ビューの参照ができません。

tableau-server-view-error-with-chrome45

エラーメッセージは、次のいずれかのエラーが発生することがあります。

Uncaught SyntaxError: Unexpected identifier Uncaught TypeError: Cannot read property 'startup' of undefined

もしくは

Unexpected error An unexpected error occurred. If you continue to receive this error please contact your Tableau Server Administrator. Uncaught SyntaxError: Unexpected identifier Uncaught Error: Attempted to use CommandController before creating it.

解決策

9/17 17:00 追記:Tableau社のKB(ナレッジベース)が更新され、最新の対処方法としては、Google Chromeを最新バージョン(バージョン 45.0.2454.93 (64-bit)以降)にアップグレードするか、Tableau Server 9.1以降にアップグレードするどちらかに変更され、パッチ(ChromeFix.zip)の提供は中止されていますので、今後はこのどちらかで対処してください。
Error "Uncaught SyntaxError: Unexpected identifier" When Viewing Workbook in Chrome

以下の3つの解決策が紹介されています。

  1. ブラウザの[戻る]ボタンを押して、再びビュー表示する
  2. Tableau Serverに修正パッチを適用する
  3. Internet ExplorerやMozillaのFirefox、Google Chromeの以前のバージョンのように、別のブラウザ利用する

私の環境では、「1」では改善が見られませんでした。ブログでは、抜本的な対策として「2」の方法をご紹介します。「3」の方法は抜本的な対策が終わるまでの間の暫定対策として考えています。

事前のバックアップ

作業前にデータバックアップもしくはEBSのスナップショットを取得します。以下のコマンドは、C:\backupの下にデータバックアップを作成する手順となります。管理者としてコマンドプロンプトを開き実行してください。なお、Tableau Serverのインストールパスは適宜変更ください。

mkdir C:\backup
cd C:\Program Files\Tableau\Tableau Server\9.0\bin
tabadmin.exe backup C:\backup\tableau-server-contents -d

実行する以下のようになります。

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users\Administrator>mkdir C:\backup

C:\Users\Administrator>cd "C:\Program Files\Tableau\Tableau Server\9.0\bin"

C:\Program Files\Tableau\Tableau Server\9.0\bin>tabadmin.exe backup C:\backup\tableau-server-contents -d
===== Using as backup tmp directory: C:\Program Files\Tableau¥Tableau Server¥data¥tabsvc¥temp (free space: 94.64 GB)
===== Cleaning entries from http_requests log older than 7 days
   -- Deleted 833 rows
===== Backing up database data
===== Backing up dataengine extracts
===== Backup of database data done
===== Backup of dataengine extracts done
===== Backup written to C:¥backup¥tableau-server-contents-2015-09-15.tsbak

C:\Program Files\Tableau\Tableau Server\9.0\bin>

パッチの入手

パッチは、Tableau社のKBでアナウンスページ からダウンロードして下さい。

_tableau-server-view-error-with-chrome45-patch

パッチの適用

ダウンロードしたパッチ(ChromeFix.zip)は、Tableau Serverディレクトリの下を展開してください。

tableau-server-view-error-with-chrome45-patchfile

ChromeFix.batを実行します。管理者としてコマンドプロンプトを開き実行してください。なお、Tableau Serverのインストールパスは適宜変更ください。

cd "C:\Program Files\Tableau\Tableau Server"
ChromeFix.bat

実行する以下のようになります。

C:\Program Files\Tableau\Tableau Server>cd "C:\Program Files\Tableau\Tableau Server"

C:\Program Files\Tableau\Tableau Server>ChromeFix.bat

C:\Program Files\Tableau\Tableau Server>xcopy vql*.js c:\backup\Run1\ /sy
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqlauthoring.debug.js
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqlauthoringmobile.debug.js
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqlauthoringmobile.js
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqlauthoringweb.debug.js
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqlauthoringweb.js
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqlcore.debug.js
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqldomain.debug.js
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqlmobile.js
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqlui.debug.js
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqluimobile.debug.js
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqluiweb.debug.js
D:9.0\vizqlserver\public\v_90001503181720\javascripts\vqlweb.js
12 個のファイルをコピーしました

C:\Program Files\Tableau\Tableau Server>fnr.exe --cl --dir "C:\Program Files\Tableau\Tableau Server\." --fileMask "vql*.debug.js" --includeSubDirectories --find "dojo.a
ddOnLoad(function() {" --replace "dojo.addOnLoad(function() {\n''; //fix for B426138"

File:     .\9.0\vizqlserver\public\v_90001503181720\javascripts\vqlauthoring.debug.js
Matches:  1
Replaced: Yes

File:     .\9.0\vizqlserver\public\v_90001503181720\javascripts\vqlauthoringmobile.debug.js
Matches:  1
Replaced: Yes

File:     .\9.0\vizqlserver\public\v_90001503181720\javascripts\vqlauthoringweb.debug.js
Matches:  1
Replaced: Yes

File:     .\9.0\vizqlserver\public\v_90001503181720\javascripts\vqlui.debug.js
Matches:  1
Replaced: Yes

File:     .\9.0\vizqlserver\public\v_90001503181720\javascripts\vqluimobile.debug.js
Matches:  1
Replaced: Yes

File:     .\9.0\vizqlserver\public\v_90001503181720\javascripts\vqluiweb.debug.js
Matches:  1
Replaced: Yes


====================================
Stats

Files:
- Total: 8
- Binary: 0 (skipped)
- With Matches: 6
- Without Matches: 2
- Failed to Open: 0
- Failed to Write: 0

Matches:
- Found: 6
- Replaced: 6

Duration: 0.406 secs
====================================

C:\Program Files\Tableau\Tableau Server>fnr.exe --cl --dir "C:\Program Files\Tableau\Tableau Server\." --fileMask "vql*.js" --includeSubDirectories --find "dojo.addOnLo
ad(function(){" --replace "dojo.addOnLoad(function(){'';"

File:     .\9.0\vizqlserver\public\v_90001503181720\javascripts\vqlauthoringmobile.js
Matches:  2
Replaced: Yes

File:     .\9.0\vizqlserver\public\v_90001503181720\javascripts\vqlauthoringweb.js
Matches:  2
Replaced: Yes

File:     .\9.0\vizqlserver\public\v_90001503181720\javascripts\vqlmobile.js
Matches:  2
Replaced: Yes

File:     .\9.0\vizqlserver\public\v_90001503181720\javascripts\vqlweb.js
Matches:  2
Replaced: Yes


====================================
Stats

Files:
- Total: 12
- Binary: 0 (skipped)
- With Matches: 4
- Without Matches: 8
- Failed to Open: 0
- Failed to Write: 0

Matches:
- Found: 8
- Replaced: 8

Duration: 0.297 secs
====================================

C:\Program Files\Tableau\Tableau Server>

ChromeFix.batを実行すると元の状態に戻すためのundoChromeFix.batが自動生成されます。また、適用前のファイルのバックアップはC:\backup\Run1ディレクトリが作成されて、その下にファイルが保存されます。

動作確認

Chrome(Ver.45)の閲覧履歴をクリアする必要があります。アナウンスされた手順では、Chrome(Ver.45)のキャッシュクリアについてものもありましたが、弊社の環境では[再読み込み]ボタンを押すのみで回復しています。

9/15 15:00 追記:キャッシュクリアをしないと改善しない場合があることを確認しました。キャッシュクリアする方法は、[Chromeメニュー]をクリックし、[設定]を選んで、画面下の詳細設定を表示 [プライバシーの閲覧履歴データ]を「キャッシュされた画像とファイル」が選択されている状態で、[閲覧履歴データを消去する]を押します。

サービスの再起動をしないと反映されない環境がありましたので、パッチを適用しても改善しない場合は、サービスの再起動をおすすめします。
サービス再起動は、以下のコマンドを管理者としてコマンドプロンプトを開き実行してください。環境にも依存しますが、3分から6分程度のサービス停止を想定してください。

cd "C:\Program Files\Tableau\Tableau Server\9.0\bin"
tabadmin.exe restart

最後に

Tableau Serverは、専用のアプリケーションをインストールすることなく、ウェブブラウザのみでセキュアで自由なデータディスカバリをできるのが魅力です。ほとんどの環境で影響が見られますので、ぜひとも早めの対策をおすすめ致します。