【Node.js】typescript.jsでSyntaxError: Unexpected token '?'

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Node.js】typescript.jsでSyntaxError: Unexpected token '?'

2024-5-28 |

ひっさしぶりにUbuntuのNode.jsのプロジェクトを弄ろうとしたらtypescript.jsでSyntaxError: Unexpected token '?'が発生してスクリプトが動かない!

概要

この記事では、Node.jsのプロジェクトでtypescript.jsがSyntaxError: Unexpected token '?'を発生してスクリプトが動かないのをなんとかする手順を掲載する。

下記はエラー全文。

/<project_dir>/node_modules/typescript/lib/typescript.js:139
    for (let i = startIndex ?? 0; i < array.length; i++) {
                             ^

SyntaxError: Unexpected token '?'
    at wrapSafe (internal/modules/cjs/loader.js:915:16)
    at Module._compile (internal/modules/cjs/loader.js:963:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Module.require (internal/modules/cjs/loader.js:887:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/var/www/html/pdl.js/node_modules/gulp-typescript/release/compiler.js:3:12)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)

仕様書

  • Ubuntu 22.04.2 LTS
  • node v12.22.9 -> v22.2.0
  • typescript 5.1.6

手順書

このエラーの原因はtypescriptnodeのバージョンが合ってないために発生するらしい。去年にこのプロジェクトを触った時は普通にスクリプトが動いた記憶があるんだけども…。

nodeをインストールし直すことでスクリプトが動くようになった。

インストールはaptコマンドではなく公式サイトの手順に従った。

念のために実際に私が実行したコマンドを掲載しておく。


curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 22
node -v
npm -v

まとめ(感想文)

Node.jsのプロジェクトってNode.js自体が頻繁に更新されてるのが影響してるのか、たまにいじると何かしらの問題がいつも発生して復旧するまでに時間を浪費することが多い気がする今日この頃。