0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TypeScriptで tsc -v 実行時に SyntaxError: Unexpected token '?' が発生する

0
Posted at

この記事は過去のエラー解決メモを整理したものです。
現在の推奨手順とは異なる可能性があります。
公式ドキュメントを確認して最新情報と差分がないかを確認してください。

事象

  • TypeScriptの開発環境を構築するために
  • apt install npm -> npm install -g typescript -> tsc -v の順にコマンドを実行したとき
  • 下記エラーが発生した。
(venv) home/foo# tsc -v
/usr/local/lib/node_modules/typescript/lib/_tsc.js:92
  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:85:18)
    at Object.<anonymous> (/usr/local/lib/node_modules/typescript/lib/tsc.js:8:18)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)

環境

  • Linux
  • Node.js 12.22.9
  • TypeScript 5.1系
  • npm
  • nvm

原因

  • バージョン指定せずにTypeScriptとNode.jsをインストールしたとき、TypeScript(v5.1x)とNode.js(v12.22.9)がインストールされる。
  • TypeScript(v5.1)はNode.jsのバージョンがv14.17以上でないと動かないのでエラーになる。

ES2020 and Node.js 14.17 as Minimum Runtime Requirements
-- TypeScript 5.1 > Breaking Changes

対策

インストールしたNode.js・npm・TypeScriptを削除して、バージョンv14.17以上のNode.jsをインストールする。

手順

  1. TypeScript、npmをアンインストールする。
  • 1 npm uninstall -g typescript ts-node
  • 2 apt remove npm
  1. nvmをインストールする。
  • nvmのURLはhttps://github.com/nvm-sh/nvm/blob/master/README.md#installing-and-updatingを参照

  • 1 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

  • 2 ls -l ~/.nvm | grep ins*

  • 3 source ~/.bashrc

  • 4 vi ~/.bashrc

    • .bashrcの最終行に次の2行が表示されていることを確認する。

      export NVM_DIR="$HOME/.nvm"
      [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
      [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
      
  • echo $NVM_DIR

  • command -v nvmを実行して、以下のようになればOK。

    (venv) home/foo# command -v nvm
    nvm
    
  1. バージョン v14.17 以上のNode.jsをインストールする。今回は v18.17.0 を使用する。
  • nvm install v18.17.0

  • 正しくインストールできているか確認

    (venv) home/foo# node -v
    v18.17.0
    
  1. npm、TypeScriptをインストールする。
  • apt install npm

  • 正しくインストールできているか確認

    (venv) home/foo# npm -v
    9.6.7
    
  • npm install -g typescript ts-node

  • 正しくインストールできているか確認

    (venv) home/foo# tsc -v
    Version 5.7.3
    (venv) home/foo# ts-node -v
    v10.9.2
    

参考情報

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?