キャッチされない SyntaxError: 予期しないトークン '.' ! !!以前のバージョンのnode.jsはオプションの連鎖演算子をサポートしていません

 ノード.js バージョン 13.11.0

1. 問題が発生する

      ローカルのnode.jsプロジェクトがパッケージ化され、サーバー上で実行されると、プロジェクトは起動に失敗し、エラーが報告されます。


    キャッチされない SyntaxError: 予期しないトークン '.'  

    JSコードからのオプションの連鎖演算子

     ノードのバージョンを確認する node -v

     オンライン ノードのバージョンは 13.11.0 です。ローカルでの起動時にエラーは報告されません。ローカル ノードのバージョンは 18.12.1 です。

 

3. 技術紹介

オプションの連鎖演算子: オプションの連鎖演算子は、Swift プログラミング言語のバージョンである Swift 5.1 で導入されました。これは、null (null) の可能性があるプロパティにアクセスするとき、または null の可能性があるメソッドを呼び出すときに、NullPointerException を回避する方法です。Swift、TypeScript、JavaScript などのいくつかのプログラミング言語で導入されました。

オプションの連鎖演算子。少なくともv14.10.0の Node.js でサポートされています。

4. エラー報告の理由:

Node.js でサポートされる JavaScript 構文と機能は、使用される V8 JavaScript エンジンのバージョンによって異なります。V8 は、JavaScript コードを実行するために Google によって開発された高性能 JavaScript エンジンです。オプションのチェーン オペレーターは ECMAScript 2020 標準で導入された新機能であり、ECMAScript 標準の機能には Node.js での V8 エンジンのサポートが必要です。

V8 エンジンは通常、ECMAScript 標準の更新に比較的ゆっくりと追従して、新機能が完全にテストされ、最適化されていることを確認します。したがって、オプションのチェーン演算子が ECMAScript 標準の一部としてリリースされたとき、V8 エンジンがこの機能を適応させてサポートするまでに時間がかかりました。

Node.js v14.10.0 より前のバージョンでは、V8 エンジンの古いバージョンが使用されており、これらの古いバージョンはオプションの連鎖演算子をサポートしていませんでした。したがって、古い Node.js バージョンでは、条件判断、短絡評価など、null の可能性があるプロパティやメソッド呼び出しを処理するには、他のメソッドまたはツールを使用する必要があります。

5. 解決策

パッケージ マネージャーを使用して Node.js をアップグレードします (オプション)。すでにパッケージ マネージャー (npm や nvm など) を使用している場合は、それらを使用して Node.js をアップグレードできます。

指定したバージョンの Node.js をインストールまたは切り替えます: npm install -g node@<version>

例: npm install -g [email protected]

Node.js のアップグレードには管理者権限が必要な場合があるため、インストールおよびアップグレード操作を実行するには管理者アカウントを使用する必要がある場合があります。

これは Node.js をグローバルにインストールするだけであることに注意してください。特定のプロジェクトで異なるバージョンの Node.js を使用する必要がある場合は、nvm (Node Version Manager) ツールを使用して複数の Node.js バージョンを管理することを検討してください。

また、アップグレード プロセス中の予期せぬ事態を防ぐために、アップグレードする前にプロジェクト コードと関連する構成ファイルをバックアップすることをお勧めします。特定のバージョンの Node.js を使用している場合は、新しいバージョンに適応するようにコードを変更またはテストする必要がある場合があります。

おすすめ

転載: blog.csdn.net/youyudehan/article/details/132196403