Node.js関連のことを調べてみた

Node.js関連のことを調べてみた

コンソールに地図を表示するnode.jsアプリ

下記のように緯度経度や、地名からコンソールに地図を表示する(node.js)アプリです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276579/11d9a75e-09a3-b167-179f-d7b0d4aed982.png)
![image-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276579/8c25cb9d-9d4b-e59d-fece-037c0296d878.png)

## はじめに

[ターミナル内で画像を表示する](https://qiita.com/murasuke/items/5957cd228d5209eea5f9)や、[緯度、経度をもとに国土地理院タイルを表示する方法](https://qiita.com/murasuke/items/ad81b7b726a3463fa3fe)を応用して、ターミナル内に地図を表示してみたいと思います

## 環境
(Window

元記事を表示

kintone プラグイン一括登録・更新用リスト作成

[kintone プラグイン一括登録・更新](https://qiita.com/rex0220/items/a0570f40c0be78b3907a)用に、プラグイン開発ディレクトリから一覧を作成します。

# 概要

下記のようなプラグイン開発ディレクトリからプラグインリストを作成します。
複数プラグインだとリストを手作業で作成するのも大変です。
コードは、ChatGPT にほとんど作ってもらい、最後の出力の並びを訂正したくらいです。

– プラグイン開発ディレクトリ

![2024-07-20_16h32_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/fe76ee68-d76a-58f7-e30c-07cccaa2c660.png)

– 作成するプラグインリスト
– プラグインファイルパス、プラグインID、プラグイン名

“`.txt
node scripts/plugin-uploader.js -f aggregate/dist/aggregate-plugin

元記事を表示

kintone プラグイン一括登録・更新

kintone プラグインを一括登録・更新する処理です。
最新版のプラグインをまとめて登録・更新するのに便利です。

# 概要

[kintone プラグインアップローダー互換対応](https://qiita.com/rex0220/items/aab91d4ee35baf113082)を順番に呼び出すだけですが、ドメインやユーザーなどを指定して汎用的に使えるようにします。
開発環境・運用環境・米国・中国など複数環境のプラグイン登録・更新に便利です。

plugin-uploader.js を起動するリストがあれば、それを単純にシェルに流し込めば実行できますが、エラー処理や対象ドメインを指定できるようにします。

– ドメイン・ユーザー・パスワード指定
– 待機時間指定
– プラグイン登録・更新は、サーバー側でそれなりの処理時間がかかると思われるので、規定値で3秒待ちにした
– エラー時に続行するか応答確認

# プラグイン一括登録・更新の実行例

指定ファイルには、プラグインファイル・プラグインIDを指定します。
プラグイン名は、コメントで入れています。
プラグインの開発環

元記事を表示

multerをざっくり理解する

# multerとは
– Node.jsのミドルウェア
– ファイルのアップロードを簡単に処理する

# そもそもファイルのアップロードとは
– HTTP送信しただけではアップロードとは実質的に言えない
– その後のサーバーサイド上で行う処理も含めてアップロードと認識する
– この部分をmulterで行う

# 使い方
### インストール
“`
npm install multer
“`
### Node.js
“`js
const multer = require(“multer”);

// multerの設定
const multerMemoryStorage = multer.memoryStorage(); // ファイルをメモリに保存
const multerUpload = multer({ storage: multerMemoryStorage }); // multerインスタンスの作成

router.post(
“/upload”,
multerUpload.single(“markdown”),
async (req,

元記事を表示

Node.js v22.5.0でCIのnpmが動作しないバグが発生中

## TL;DR

– Node.js v22.5.0にはバグがある
– CIで使われるnpmのclean-installコマンドが失敗することがある
– v22.5.1がリリースされるまではv22.4系へのダウングレードを推奨

## 経緯

2024年7月18日、私のNode.jsを使ったプロジェクトがCloudflareでのビルドに失敗していることに気づきました。

“`
Installing project dependencies: npm clean-install –progress=false
npm error Exit handler never called!
npm error This is an error with npm itself. Please report this error at:
npm error
npm error A complete log of this run can be found in: /opt/buildhome/.npm/_logs/20

元記事を表示

Node.jsでS3の署名付きURL取得

node.jsで署名付きURL取得するコードサンプルを書きました。
aws-sdk v3を使用しています。

“`javascript
import { S3Client, PutObjectCommand, GetObjectCommand } from “@aws-sdk/client-s3”;
import { getSignedUrl } from ‘@aws-sdk/s3-request-presigner’;

const s3 = new S3Client({ region: process.env.AWS_REGION });
// 環境変数にあらかじめBUCKET_NAMEを登録しておく
const BUCKET_NAME = process.env.BUCKET_NAME;
const KEY = “hoge”

export const handler = async (event) => {
const { filename, contentType } = JSON.parse(event.body);
console.log(“body”,

元記事を表示

DockerやNVMを使わずに異なるバージョンのNode.jsをインストールして切り替える方法

多くの開発者は、古いオペレーティングシステムでNode.jsや関連ツールの新しいバージョンをインストールしようとすると、互換性の問題に直面します。

一般的な解決策として、コマンドラインツールとしてDockerイメージを使用する方法があります。Dockerを使用してNodeのバージョンを管理することで、依存関係の完全性が保証され、依存関係の不一致エラーを回避できます。これはNVMを使用するよりも少し便利ですが、ディスクスペースの使用とイメージをプルするための時間がかかるというトレードオフがあります。

そこで、異なるバージョンのNode.jsコマンドをより簡単かつ迅速に実行できるツールが登場しました。それが**[ServBay](https://www.servbay.com)**です。

ServBayは、開発環境の管理を簡素化するために設計されたオールインワンの開発環境管理ツールです。

ServBayは驚くべきツールで、インストールパッケージはわずか13MBですが、複数のバージョンのNode.jsをサポートしています。クリック一つでダウンロードでき、追加の手順やイメージをプルする

元記事を表示

kintone プラグインアップローダー互換対応

[kintone プラグインアップロード処理](https://qiita.com/rex0220/items/ea321d0573b83607ab2c) の動作が問題ないので、プラグインアップローダー互換対応してみました。
アップロードまでの待ち時間短縮とアップロード失敗が無くなり、作業中のストレスがかなり減ります。

# 概要

プラグインアップローダーの代わりに、REST API でプラグインアップロードするように変更。

– watch オプション追加
– プラグインパッケージ処理が実行するたびに、プラグインアップロードする
プラグインファイル変更の監視処理追加
– waittime オプション追加
– 1回目のプラグインパッケージ処理が完了するまでの待ち時間

## 問題点

– プラグインのインストールと変更をプラグインID の有無で判断しているため、複数の kintone 環境に対応できない

REST API で、プラグインID無しで更新ができると解決するのだが…
暫定対応としては、「とりあえず更新処理してエラーになったらインストール処理する」にした

元記事を表示

NodeでURLからCSVデータ取得してみた

いちいち更新されるたびにファイルをダウンロードしてきて…って、すごくめんどくさいので、CSVぐらいURLから取得できないかなあ…

ということで、nodeでCSVをURLから取得できるプログラムを作ってみた。

“`js:urlcsv.js
export class URLCSV {
async * #makeTextFileLineIterator(fileURL, charCode) {
const utf8Decoder = new TextDecoder(charCode);
const response = await fetch(fileURL);
const reader = response.body.getReader();
let { value: chunk, done: readerDone } = await reader.read();
chunk = chunk ? utf8Decoder.decode(chunk) : “”;

const newline = /\r?\n/gm;
l

元記事を表示

kintone プラグインアップロード処理用プラグインIDセット

[kintone プラグインアップロード処理](https://qiita.com/rex0220/items/ea321d0573b83607ab2c)用に、既存のプラグインIDをファイルにセット(メモ)

# 概要

作業手順をメモ

・[kintone プラグイン一覧取得](https://qiita.com/rex0220/items/6ab8475e87c5de08e21d)で、プラグインID とプラグイン名を取得
・各プラグインの 「manifest.json」ファイルからファイルパスとプラグイン名を取得
・プラグイン名でマッチングして、プラグインIDとファイルパスを取得して、ファイル作成コマンド作成

# kintone プラグイン一覧取得

kintone 開発環境から、[kintone プラグイン一覧取得](https://qiita.com/rex0220/items/6ab8475e87c5de08e21d)で、一覧作成

“`listPluginID.txt
*** Plugin List ***
# pluginId, name, version, plug

元記事を表示

kintone プラグイン一覧取得

kintone REST API に、インストール済みプラグイン一覧取得が追加されたので、試してみました。

# 概要

既存のプラグインID を簡単に取得できます。

>[インストール済みのプラグインの一覧を取得する](https://cybozu.dev/ja/kintone/docs/rest-api/plugins/get-plugins/)

開発は、[kintone プラグインアップロード処理](https://qiita.com/rex0220/items/ea321d0573b83607ab2c)をもとにchatGPT で、API を変えてループ処理にしました。

# プラグイン一覧表示

プラグインのインストール順に、表示されます。

“`実行ログ.log
> node .\scripts\listPlugin-api.js
*** Plugin List ***
# pluginId, name, version, pluginStore
1 gbjnadbngbniopdeibcjihdkhkcinljf : 項目絞り込み, 24, false
2 jaclnk

元記事を表示

kintone プラグインアップロード処理

kintone REST API に、プラグインアップロードが追加されたので、試してみました。

# 概要

kintone にプラグイン関連の REST API が追加されました。
plugin-uploader は、ブラウザー経由でプラグインをアップロードするため、よく失敗する。
またそれなりに処理時間もかかるため、REST API を試してみました。
REST API 版アップロードは、処理時間が早く、アップロードの失敗も無くよさそうです。

> cybozu developer network>kintone>kintone APIドキュメント>kintone REST API>プラグイン
– [プラグインを読み込む](https://cybozu.dev/ja/kintone/docs/rest-api/plugins/add-plugin/)
– [プラグインを更新する](https://cybozu.dev/ja/kintone/docs/rest-api/plugins/update-plugin/)

開発は ChatGpt に、コードを生成してもらい、動作しない部

元記事を表示

GitHub Action で npm ci 高速化のために cache を使ってみる実験ノート

## 背景

GitHub Actions で、ユニットテストのフレームワークである Vitest を 動かそうとしていました。Vitest を動かすには、Node.js 環境を構築してパッケージインストールをして、という動作が必要になります。

パッケージのインストールは、あまり数が多くないうちは問題にならないにしても、増えてくるとパッケージインストールに時間を食われるようになってきます。

そのとき、インストールしたパッケージを丸々保存しておき、次使うときに復元してやることで、パッケージインストールにかかる時間を減らすことができ、ワークフローの実行時間を減らすことができます。GitHub Actions では、cache という機能があり、それを活用できます。

(今のところ、使っているパッケージは Vitest のみで実行時間は問題になっていないのですが、) 興味を持ったこの機会に cache 機能を使っての効果を確かめてみることにします。

## 下準備

適当に GitHub のリモートリポジトリを用意し、それをクローンしたローカルリポジトリ上で作業をします。

“`sh

元記事を表示

しくみを理解!VS CodeによるNode.js・TypeScriptのデバッグ設定方法

## はじめに
[以前の記事](https://qiita.com/course_k/items/eecf57aa1f5d7e9a55a4)で、ReactとTypeScriptのVS Codeでのデバッグ設定をまとめました。

今回はNode.jsとTypeScriptで開発する際のデバッグ方法をまとめます。

## 設定ファイルの生成
VS Codeの「実行とデバッグ」メニューから「launch.jsonファイルを作成します。」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251137/d7b36845-96f8-b1be-aea0-ced94fdcb967.png)

デバッガーの選択に移るので、「Node.js」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251137/17de710f-29ee-fc02-53ff-5a7f559a2d86.pn

元記事を表示

【解説付き】Node.js + ExpressのAPIサーバをgraceful shutdownする【実装例付き】

## はじめに

こんにちは!Gopherくん大好きマンの[@o_ga09](https://x.com/o_ga09)です!

## TL;DR

– この記事を読むと
– Graceful Shutdownを理解できる
– Graceful Shutdownを実装しないと起き得るエラーを理解できる
– Graceful Shutdownを実装できるようになる

## 対象読者

– バックエンドエンジニア
– コンピュータにおけるプロセス・スレッドが理解している
– 何かしらの言語でAPIサーバの実装経験がある
– Dockerを使用したことがある

## 免責事項

本記事における実装はサンプルです。本記事を参考にして実装されたコードで起こる障害に関して筆者はいかなる責任も負いかねます。

## 目次

– [事象](#事象)
– [原因](#原因)
– [アーキテクチャ](#アーキテクチャ)
– [1. Graceful Shutdownとは](#1-graceful-shutdownとは)
– [2.OSのシグナルの種類](#2-osのシグナルの種類)

元記事を表示

【Dockerfile】Node.js / TypeScript のコンテナを作成する

# はじめに
この記事では、Dockerfile からビルドしたイメージを元に Node.js / TypeScript のコンテナを作成する手順について記載します。

以下の記事の Node.js / TypeScript バージョンです。

https://qiita.com/Yasushi-Mo/items/0c6ed9be966f764ff7ca

# 開発環境
開発環境は以下の通りです。

– Windows11
– Docker Engine 26.1.1
– Node.js 20.15.1
– npm 10.8.2
– @types/node 20.14.10
– ts-node 10.9.2
– TypeScript 5.5.3

# Node.js / TypeScript アプリケーションの作成
まずは、Node.js / TypeScript アプリケーションを作成します。

## `package.json` の作成
`package.json` を作成します。

https://docs.npmjs.com/cli/v10/commands/npm-init

元記事を表示

【Node.js/TypeScript】比較して理解する ts-node

# はじめに
この記事では、TypeScript を JavaScript にコンパイルして実行する方法と ts-node を使って TypeScript を直接実行する方法について記載します。

https://typestrong.org/ts-node/

# 開発環境
開発環境は以下の通りです。

– Windows11
– Node.js
– npm 10.8.2
– @types/node 20.14.10
– ts-node 10.9.2
– TypeScript 5.5.3

# JavaScript にコンパイルして実行する方法
まずは JavaScript にコンパイルして実行する方法を記載します。

## 1. package.json の作成
`package.json` を作成します。

https://docs.npmjs.com/cli/v10/commands/npm-init

コマンド実行中の質問をスキップするため、`-y` をつけて実行します。

“`powershell
npm init -y
“`

`package.json` が作成され

元記事を表示

WSL2内にNode.jsが動作するDocker環境を用意した(Docker Compose)

# これはなに?

前回の続きになります

https://qiita.com/acronhub/items/49523a7edf79f18ae11d

Docker Compose のボリュームマウントを利用して、コンテナ内のフォルダーの内容を変更できるようにします

– マウントしない場合は、イメージにフォルダーの内容を保存しているため、変更するにはイメージの再作成が必要になります
– docker コマンドを直接使う場合であっても、コマンドラインオプションを付けることでボリュームマウントすることもできます

# 環境

– Windows11
– WSL2
– Ubuntu 20.04
– Docker Desktop
– VS Code
– Remote WSL

# 準備

必要なファイルを作成します

## .dockerignore

ボリュームマウントするので不要になったファイル・フォルダを管理外として設定します

“`.dockerignore
node_modules
“`

## docker-compose.yml

元記事を表示

何となく使っている”npm”ってなぁに?

# はじめに

多くの開発者が日常的に使用しているnpmですが、その仕組みや重要性を深く理解している人は意外と少ないのではないでしょうか。
私もそうです。

この記事では、調べて分かったnpmについてのいろいろを説明していきます。

# npmって?
npmはNode Package Managerの略称で、JavaScriptのパッケージ管理ツールです。
Node.jsのデフォルトパッケージマネージャーとして広く使用されています。

パッケージのインストールと管理、バージョン管理、そして依存関係の解決という割と重要めな役割を担っています。

# npmの歴史
npmは2010年にIsaac Z. Schlueterによって開発されました。

Node.jsの普及と共に急速に成長し、現在では世界最大のソフトウェアレジストリとなっています。
150万以上のパッケージが登録されており、その数は日々増加しています。

2020年にはMicrosoftがnpmを買収し、将来的にはGitHubとnpmの統合が進むと言われています。

# npmの基本的なところ
npmの基本機能は主に三つありま

元記事を表示

くわしく解説!VS CodeでのTypeScripとReact開発のデバッグ設定方法

## はじめに
VS Code上でデバッグを行う際、諸々の設定に手間取ったので、TypeScriptとReactで開発する場合のデバッグの設定について解説します。

:::note warn
デバッグ自体を実行する方法(ブレークポイントの設定や、ステップ実行など)については触れていません。
あくまでもデバッグを有効化するための設定についての解説となります。
:::

## 事前準備
JavaScript DebuggerというVS Codeの拡張機能が必要ですが、デフォルトでインストールされているはずなので、特に新たにインストールする必要はありません。

:::note warn
古いVS Codeを使用している場合には、別途インストールが必要です。
:::

## TypeScriptとReactでのデバッグ
### 設定ファイル生成
デバッグを行うためには「launch.json」というファイルに設定を記載する必要があります。

以下のようにVS Codeの「実行とデバッグ」メニューから「実行とデバッグ」ボタンを押下します。
![image.png](https://qiita-

元記事を表示

OTHERカテゴリの最新記事