3
0

More than 1 year has passed since last update.

nodeバージョンが合わないで「SyntaxError: Unexpected token '?'」の対応

Last updated at Posted at 2023-03-05

シナリオ

Nextjs のバージョンアップ(v11 → v13)

-    "next": "11.0.1",
+    "next": "^13.1.0",

を検討していますが、github action を経由で、

$ npm run build

を実行したら、下記のようなエラーが出てきました。

err: /......./node_modules/next/dist/build/index.js:347
err:                     ...pageKeys.app ?? [], 
err:                                      ^
err: SyntaxError: Unexpected token '?'
err:     at wrapSafe (internal/modules/cjs/loader.js:915:16)
err:     at Module._compile (internal/modules/cjs/loader.js:963:27)
err:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
err:     at Module.load (internal/modules/cjs/loader.js:863:32)
err:     at Function.Module._load (internal/modules/cjs/loader.js:708:14)
err:     at Module.require (internal/modules/cjs/loader.js:887:19)
err:     at require (internal/modules/cjs/helpers.js:74:18)
err:     at Object.<anonymous> (/......./node_modules/next/dist/cli/next-build.js:10:37)
err:     at Module._compile (internal/modules/cjs/loader.js:999:30)
err:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
err: npm ERR! code ELIFECYCLE

nodeバージョン確認

nodeバージョンが合わっていないだと思っていますので、アプリのnodeバージョンを確認しました。

$ cat .node-version
16.13.1
$ node -v
v16.13.1
$ nodenv version
16.13.1 (set by ....

問題なそうです。

調査

nodeのglobalバージョンを確認すると、

$ node -v
v12.22.12

ここの問題かもしれません。手動で

$ npm run build

を実行すると、無事にビルトできました。monitで確認すると

$ pm2 monit
x                                            xx Interpreter args      N/A                                                                                 x
x                                            xx Exec mode             fork                                                                                x
x                                            xx Node.js version       16.13.1                                                                            x

どちらでも大丈夫そうですね。なんだろう? github actionでnodeバージョンを確認すると、

out:   run `npm audit fix` to fix them, or `npm audit` for details
out:   NPM building ...
out: v12.22.12
out: > ....-react-application@1.0.0 build ./
out: > next build
err: /......./node_modules/next/dist/build/index.js:347
err:                     ...pageKeys.app ?? [], 
err:                                      ^
err: SyntaxError: Unexpected token '?'
err:     at wrapSafe (internal/modules/cjs/loader.js:915:16)
....

v12.22.12(globalバージョン)を利用しているらしいです。

対応

nodeのglobalバージョンを16.13.1 に変更する

$ sudo npm install -g n
$ sudo n 16.13.1
$ node -v
v16.13.1

Re-run all jobs をクリックすると、無事にデプロイできました。

結論

おそらくgithub actionでnode のglobalバージョンを利用しているらしいです。
nodenv効かないかな?ご参照いただければ幸いです。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0