macでは問題なくnuxt.jsが動くのに何故かDockerで謎のエラーがでるようになった時の記録です。
発生した問題
ある日突然axiosで通信するとこんなエラーが。。。
SyntaxError: Unexpected token {
at node_modules/vue-server-renderer/build.prod.js:1:77472
at o (node_modules/vue-server-renderer/build.prod.js:1:77535)
at node_modules/vue-server-renderer/build.prod.js:1:77677
at Function.module.exports.o.e (webpack/bootstrap:2:0)
at P (webpack/bootstrap:2:0)
at Promise.all (webpack/bootstrap:2:0)
at Object.keys.reduce (webpack/bootstrap:2:0)
at Array.reduce (<anonymous>)
at Promise.all.Array.concat.apply.e.matched.map (webpack/bootstrap:2:0)
at Array.map (<anonymous>)
原因
いろいろ調べていったところ、macとdockerとで全然違うnode.jsのバージョン使ってたのが原因でした。。。macが10.16つかってて、Dockerが8-alpineと大幅に古いバージョン使ってました。。。
なのでDockerファイルを直して無事解決です。
おまけ
MacのNode.jsを上げる手順です。
nodebrewを使う前提です。詳しくはこの方の記事がわかりやすかったです。
以下は普段使いそうなコマンドの抜粋です。
インストール可能なnode.jsのバージョンを調べる
$ nodebrew ls-remote
v0.0.1 v0.0.2 v0.0.3 v0.0.4 v0.0.5 v0.0.6
v0.1.0 v0.1.1 v0.1.2 v0.1.3 v0.1.4 v0.1.5 v0.1.6 v0.1.7
v0.1.8 v0.1.9 v0.1.10 v0.1.11 v0.1.12 v0.1.13 v0.1.14 v0.1.15
v0.1.16 v0.1.17 v0.1.18 v0.1.19 v0.1.20 v0.1.21 v0.1.22 v0.1.23
v0.1.24 v0.1.25 v0.1.26 v0.1.27 v0.1.28 v0.1.29 v0.1.30 v0.1.31
v0.1.32 v0.1.33 v0.1.90 v0.1.91 v0.1.92 v0.1.93 v0.1.94 v0.1.95
v0.1.96 v0.1.97 v0.1.98 v0.1.99 v0.1.100 v0.1.101 v0.1.102 v0.1.103
v0.1.104
node.jsのインストールされているバージョンを調べる
$ nodebrew ls
v8.15.0
v10.14.1
v10.16.0
current: v10.16.0
または
node -v
v10.16.0
特定のバージョンのnode.jsをインストールする
$ nodebrew install-binary バージョン
利用するnode.jsのバージョンを切り替える
nodebrew use v8.15.0
use v8.15.0
バージョンを確認する
$ node -v
v8.15.0
最後に
現時点でnode.jsの最新が12・・・