JavaScript

Gitを使ってnpmパッケージをインストールしてもらうときにビルドを実行させるためにnpm prepareを使う

npmではパッケージのインストール元として公式リポジトリ以外に、別フォルダやGitを選択することができます。 package.jsonのdependenciesを見てみると、以下の例のように、公式のリポジトリの場合にはバージョン番号が書かれており、Gitを用いている場合に…

Node.jsの組み込みモジュールutilを使ってオブジェクトを文字列に変換する(循環参照編)

前に書いた記事の補足、追加で調べた内容です。 s1r-j.hatenablog.com utilモジュールを使って文字列化する場合、オブジェクトのプロパティが自分自身を参照していると[Circular *1]に変換されると書きました。 自分自身を参照しているオブジェクトは、下のm…

Node.jsの組み込みモジュールutilを使ってオブジェクトを文字列に変換する

Node.jsを使っているとき、ログ出力やデバッグのためにオブジェクトを文字列に変換したいことがあります。今回、組み込みモジュールであるutilを使うことで、ちょっと強引ながらオブジェクトを文字列に変える方法を知ったので書き残しておきます。 この記事…

Babelによるトランスパイル前後のクラスをinstanceofで比較するとfalseになる

Node.jsではBabelを使ってトランスパイルをおこなって、どのWebブラウザでも動作するようにしたり、まだ仕様化されていないJavaScriptの機能を使ったりすることがあります。 Babelによってトランスパイルされる前のファイルに存在するクラスとトランスパイル…

AWS Lambda Node.js 18ではデフォルトのAWS SDKがv3になっている(そしてv2を使い続ける方法)

AWS LambdaのランタイムでNode.js 18を選ぶとAWS SDK for JavaScriptのバージョンが3になっています。 (LambdaのランタイムとしてNode.js 18が利用できるようになったのは2022年11月なのでこの記事は今更過ぎますね。) Lambdaではaws-sdkモジュールが内部…

Node.jsでasync-lockを使った排他制御をおこなう

Node.jsはシングルスレッドで動作するため、スレッドセーフや排他制御については考慮しなくてよいと思っていました。イベントループによって実行される処理は1つだけであり、途中で他のスレッドなどから割り込まれることはないからです。 しかし、実際にはI/…

dotenvで.envファイルから取得した環境変数は文字列型になる

dotenvはNode.jsで利用される環境変数を読み込むためによく使われているライブラリ。 .envファイルに書き込んだ環境変数を読み込んで、JSファイルでprocess.envから取得できるようになります。 簡単な例としては以下のとおりです。 .envファイル MY_ENV=myva…

Expressで非同期処理をおこなうミドルウェアの動作を確認する

Expressのミドルウェアの挙動、特に非同期処理をおこなうにエラーが発生した場合の挙動が気になったので試してみた。 ミドルウェアで非同期処理をするのは前処理でデータベースに登録するケース等を想定している。 挙動を確認した実装はGitHubにおいた:node…

Node.jsで証明書チェーンの検証をおこなう(jsrsasign編)

Node.jsでnode-forgeを使って証明書チェーンの検証をおこなう実装を前に書きました(Node.jsで証明書チェーンの検証をおこなう - Qiita)が、jsrsasignを使うことが多くなったのでその方法についてもメモしておく。 実装は例によってjsrsasignのGitHubリポジ…

Node.jsで証明書チェーンの検証をおこなう

下記のQiitaの記事と同じです。Gistがうまく貼れなかったのでこちらにも転載。 Node.jsで証明書チェーンの検証をおこなう - Qiita Node.jsで証明書チェーンの検証をおこなうソースコードを実装したので、メモとして残しておく。 調べ方がわるかったのか、実…

JavaScriptでArrayBuffer<->Base64URLの変換をおこなう

最近、JavaScriptを使ったArrayBufferとBase64URLの変換をちょくちょくおこなうようになりました。 調べてみるとやり方はちゃんと書いてあるものの、色々な実装方法があったり、サイトが散らばっていたりと毎回調べ直すのが面倒くさかったので、この記事でま…