【TruffleでDapp開発】Truffleのコマンド「truffle version」でSyntaxError

【はじめに】

イーサリアムを購入してからブロックチェーンに興味を持ち、休みの日はDapp開発の勉強をしています。技術情報を調べていると【Truffle】というイーサリアム開発のフレームワークに出会いました。早速触ってみましたが、インストール時点でエラーが発生しましたので原因と対応方法をまとめておきます。

【Truffleのインストール】

nodeとnpmが使える環境で以下のコマンドを実行します。

npm install -g truffle

【バージョン確認】

以下のコマンドを実行し、Truffleのバージョンが表示すれば正常にインストールされています。

truffle version

正しくインストールされている場合、TruffleとSolidityのバージョンが表示されます。

Truffle v4.1.13 (core: 4.1.13)
Solidity v0.4.24 (solc-js)

私の場合、ここでSyntaxErrorが発生しました。

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

【原因と対応方法】

原因と対応方法については、この記事が参考になります。

trueman-developer.blogspot.com

以下のいずれかの方法で対応可能であることが分かりましたので、nodeのバージョンをあげることにしました。Truffleのインストールなのでnodeのバージョンアップしか選択肢がありません。

  1. "use strict"(厳格モード)を使用する
  2. 実行時に起動オプション(--use_strict)をつける
  3. nodeのバージョンをあげる(6.x 以上)

【nodeのバージョンアップ】

上げる前のバージョン:v5.10.1
上げた後のバージョン:v10.8.0

nodeのバージョンは以下のコマンドで確認できます。

node -v

今回はnodeのバージョン管理ツール「nodist」を使いました。以下の記事が参考になります。

webbibouroku.com

手順1

github.com

上記サイトからインストーラーをダウンロードして、nodistのインストールを行います。インストール後は端末を再起動します。

手順2

再起動後、以下のコマンドでnodistのバージョンを確認します。

nodist -v

nodistのバージョンが表示すればインストール完了です。

0.8.8

手順3

nodeのバージョンを指定してインストールを行います。以下のコマンドでインストールできるバージョンが確認できます。

nodist dist

手順4

バージョンを指定してインストールを行います。今回はv10.8.0にしました。

nodist + 10.8.0

手順5

使用するnodeのバージョンに切り替えを行います。nodistはnodeのバージョン管理ツールなので簡単に切り替えができます。

nodist 10.8.0

手順6

正しく切り替わっているか確認します。以下のコマンドでnodeのバージョンを確認します。

node -v

変わっていない。。。

v5.10.1

nodist経由以外でnodeをインストールしている場合、アンインストールする必要がありました。ということで、v5.10.1のnodeをアンインストールします。windowsの設定>アプリと機能からnodeをアンインストールしました。

再度、nodeのバージョンを確認します。

node -v

バージョンがv10.8.0になりました!

v10.8.0

【Truffleのバージョン確認】

Truffleのバージョンを確認します。

truffle version

おぉ、SyntaxErrorではなくTruffleとSolidityのバージョンが表示されました。nodeのバージョンが古すぎたのが原因でしたね。これでTruffleのインストールは完了です。

Truffle v4.1.13 (core: 4.1.13)
Solidity v0.4.24 (solc-js)