【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のバージョンアップしか選択肢がありません。
- "use strict"(厳格モード)を使用する
- 実行時に起動オプション(--use_strict)をつける
- nodeのバージョンをあげる(6.x 以上)
【nodeのバージョンアップ】
上げる前のバージョン:v5.10.1
上げた後のバージョン:v10.8.0
nodeのバージョンは以下のコマンドで確認できます。
node -v
今回はnodeのバージョン管理ツール「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)