Open5

JavaScript/TypeScript備忘録

ichitadonichitadon

npmでローカルインストールされたパッケージをコマンド実行する

npx から実行する。

npx [コマンド]

ローカルインストールされたパッケージはプロジェクト直下の node_modules に配置されるので、直接呼び出して実行するか、このディレクトリに配置された実行ファイルにパスを通すことでも実行できる。

ichitadonichitadon

ts-node を起動しようとすると cannot be compiled under '--isolatedModules' because it is considered a global script file. で起動できない

ts-node をファイル指定せずに対話モードで起動しようとすると、以下のようなメッセージとともにすぐに落ちる。

# npx ts-node
⨯ Unable to compile TypeScript:
<repl>.ts:1:1 - error TS1208: '<repl>.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module.

原因はメッセージに記載の通り isolatedModules によるもの。この検査が有効になっているのでimport/export のない空のファイルをコンパイルしようとするとエラーになるが、対話モードでは <repl>.ts としてコードが空の状態で起動されるので、この検査でエラーになってしまう。

tsconfig.jsonisolatedModules の定義を true から falseに変更すると正常に起動できるようになる。

https://www.typescriptlang.org/tsconfig#isolatedModules

ichitadonichitadon

インストール時に high severity vulnerabilities の警告が出る

# npm install notebookjs
...
found 2 high severity vulnerabilities
  run `npm audit fix` to fix them, or `npm audit` for details

まずは npm audit で監査を実行して詳細を確認する。コマンド実行するとセキュリティレポートが出力される。

# npm audit    
                                                                                
                       === npm audit security report ===                        
                                                                                
                                                                                
                                 Manual Review                                  
             Some vulnerabilities require your attention to resolve             
                                                                                
          Visit https://go.npm.me/audit-guide for additional guidance           
                                                                                
                                                                                
  High            Inefficient Regular Expression Complexity in marked           
                                                                                
  Package         marked                                                        
                                                                                
  Patched in      >=4.0.10                                                      
                                                                                
  Dependency of   notebookjs                                                    
                                                                                
  Path            notebookjs > marked                                           
                                                                                
  More info       https://github.com/advisories/GHSA-5v2h-r2cx-5xgj             
                                                                                
                                                                                
  High            Inefficient Regular Expression Complexity in marked           
                                                                                
  Package         marked                                                        
                                                                                
  Patched in      >=4.0.10                                                      
                                                                                
  Dependency of   notebookjs                                                    
                                                                                
  Path            notebookjs > marked                                           
                                                                                
  More info       https://github.com/advisories/GHSA-rrrm-qjm4-v8hf      

npm audit fixしてみる…が、更新されない。

# npm audit fix
fixed 0 of 2 vulnerabilities in 197 scanned packages
  2 vulnerabilities required manual review and could not be updated

package-lock.json を編集してインストールする方法もあるが、npm install 毎に対象のnpmプロジェクトの情報に上書きされて元に戻ってしまうので現実的ではないようにみえる。プロジェクトのメンテナに修正してもらうか、ローカルにプロジェクトを置いて package.json を修正してインストールする感じになりそう。

ichitadonichitadon

ローカルではエラーにならないのに、VercelのビルドではWordPress REST APIのFetchが失敗する

Vercelのビルド中に、WordPress REST APIのエンドポイントにfetchでアクセスしているコード部分で以下のエラーがでる。ローカルからテスト実行している場合は問題なく動作する。

Build error occurred
FetchError: invalid json response body at https://example.com/wp-json/wp/v2/posts reason: Unexpected token < in JSON at position 0

該当箇所にレスポンスのステータスを表示させるようにログ仕込んでみると…。

    status: 403,
    statusText: 'Forbidden',

レスポンスは403で返却されている。エラーメッセージの Unexpected token < in JSON at position 0 から察するに、ボディがJSONではなくHTMLが返却されているため invalid json としてエラーが出ているように見える。

WordPress側の設定ではアクセスを弾くような設定はされていなかったが、ホスティングサービス側の設定がデフォルトで国外IPからのREST APIアクセスを遮断するような設定になっていたため、許可するように変更。Vercelでリランさせたら問題なくビルド成功した。

参考:
https://github.com/vercel/next.js/discussions/15274