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

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

express routing

# express routing

## 基本

“`
app.METHOD(PATH, HANDLER)
“`

– app : expressのインスタンス
– METHOD : post, get, put …(HTTPメソッドを小文字にしたもの)
– PATH : サーバ上のパス(URLのパス?)
– HANDLER: URLがPATHとマッチしたしたときに実行するメソッド

## 基本サンプル

– 基本はHTTPメソッド毎に、処理(メソッド)を割り当てる

“`
// GET メソッドルート
app.get(‘/’, function (req, res) {
res.send(‘GET request to the homepage’)
})

// POST メソッドルート
app.post(‘/’, function (req, res) {
res.send(‘POST request to the homepage’)
})
“`

– すべてのHTTPメソッドを割り当てる

“`
// 共通処理を仕込んでメソッド毎の処理はnex

元記事を表示

expressの備忘

# express

## 参考

– [Express](https://expressjs.com)

## インストール

“`
# package.jsonの作成
# entry point: (index.js) はお好みで。”app.js” もよくある。
npm init

# –save でpackage.jsonに追加されるので、後で構築しやすくなる。
# これはモジュールのみnode_modulesにインストールされる
npm install express –save
“`

## Hello Wolrd サンプル

– 000.HelloWolrd_index.js

“`
const express = require(‘express’)
const app = express()
const port = 3000

app.get(‘/’, (req, res) => res.send(‘Hello World!’))
app.listen(port, () => console.log(`Example app list

元記事を表示

express middleware

# express middleware

– [express middleware](http://expressjs.com/en/resources/middleware)

## [body-parser](http://expressjs.com/en/resources/middleware/body-parser.html)

各ハンドラを実行する前に、request ボディを解析して、req.body プロパティで使えるようにする

– 使い方

“`
var app = require(‘express’)();
var bodyParser = require(‘body-parser’);

app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json({type: “application/*+json”}));
“`

– json parser
– リクエストされたデータがjson形式にする。req.body で参照可能。
– typeプロパティを指

元記事を表示

Node.jsまとめ

# Node.js まとめ

## 参考

## リスト

– [Node.js本家](https://nodejs.org)
– [Node.js日本ユーザグループ](https://nodejs.jp/)
– [npm](https://www.npmjs.com/)
– Nodeのパッケージマネージャ

“`bash
# Nodeで作成する前に実行してpacakge.jsonを作成しておく
npm init
# npm でパッケージを追加
npm install [package name] –save
npm install [package name] –save-dev

# どこかから持ってきた環境でpacakge.jsonがあれば以下で必要なパッケージがインストールされる
npm install
“`

– [NodeSchool](https://nodeschool.io/ja/)
– NodeでNodeを学習

– [Express](http://expressjs.

元記事を表示

SQLLineageを作ってみた(ベータ版リリース🎁)

# はじめに :writing_hand:
**SQL Lineage**という言葉をご存じでしょうか。

“リネージュ”か”リネージ”か日本語特有の問題が出ますが、とりあえず私は”リネージ”でいきます。
英単語のlineageは、系統とか血統という意味です。ゲームで20年以上前から、リネージュというのがありますが、同じ単語です。
スペルが難しいので私は、”LINE”と”AGE”が組み合わさって、祖先にさかのぼる系統図の線をイメージして覚えてます。

さてそのリネージですが、SQLと合わせて、**SQL Lineage**というものがあります。with句を使ったりした複雑なSQLで、最終的なselectで使う列って、おおもとはどこから来てるんだっけ?というのを図示するものです。

そのツールはいくつか出てるのですが、使い勝手とか、機能過多とか、見た目とかでしっくりこなさすぎるので、作ってみることにしました。有償のサービスもあるけど、これそんなに難しい話じゃなくない?という安易な考えもあり。

# 要件・技術 :point_up:
– クライアント
– 要件:ブラウザで動く

元記事を表示

playwright Test generatorの使い方

# playwrightとは
Playwrightは、Microsoftによって開発されたオープンソースの自動化ライブラリで、Webアプリケーションのテストを支援します。

複数のブラウザ(Chrome、Firefox、Safariなど)に対応していて
ヘッドレスモード(画面表示なし)とヘッドモード(画面表示あり)の両方で動作します。

Playwrightを使用すると、Webページの自動操作やテストケースの作成が簡単になります。

# playwright の使い方
playwright codegenは、ユーザーがブラウザで行った操作を自動的にテストコードとして生成する機能です。

このコマンドを使用すると、特定のWebサイトを開きながらユーザーのアクション(クリックや入力など)を記録し、そのアクションを模倣するPlaywrightのテストスクリプトを生成できます。

生成されたテストコードは、Playwrightのテストとしてそのまま利用することができます。
テストの作成を効率化ができます。

## playwright のインストール

インストールにはnodejsが必要です。

元記事を表示

Windows上Subline Text3 javascript実行させる

概要

Subline Text3上で、.jsファイルをビルド実行させる方法を説明します。

Node.js を[インストール](https://nodejs.org/en/download)

– Node.jsバージョンなど選択してダウンロードします。
![0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159490/e1455de1-4e3f-a360-343b-b5c87a97e2de.png)
– ダウンロードしたファイルをクリックして、インストールします。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159490/be16a9ea-c3f9-6c27-8d59-5d3926bb63d7.png)
– ライセンス同意して次のボタン押して、インストールまで進みます。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

Node.js: 現在時刻を改ざんして、日時が絡むテストを簡単にする方法

時間に依存する機能を持つアプリケーションのテストは、しばしば複雑で時間を要する作業です。「24時間後にログアウトしていること」といったテストのために1日待つのは辛いものがありますね…。

システムの時計を変更することなく、特定の日時でコードが正しく動作するかをテストする方法はないでしょうか。

ここでは、`libfaketime`を利用してNode.jsのアプリケーションで時間を自由に操る方法をご紹介します。

### libfaketimeとは

`libfaketime`は、プロセスに報告される現在日時をマシンのシステムクロックとは異なる値に偽装することを可能にするライブラリです。これは、**システムコールに介入**し、ユーザーが定義した日時を返すことで実現します。システム全体の日付を変更せずに、特定のプロセスだけのシステム日付を変更することが可能です。テスト環境で時間を操作し、特定の時点でのアプリケーションの動作を確認するのに非常に便利です。

### Dockerを使用したlibfaketimeのインストール

Node.jsのアプリケーションで`libfaketime`を使用

元記事を表示

GitHub ActionsでのJavaScriptヒープメモリエラーの解決方法

## はじめに
GitHub Actionsでのテスト実行中にJavaScriptヒープメモリエラーが発生した経験を共有します。エラー内容、その原因、そして解決策について詳しく解説します。

## エラー内容
以下が発生したエラーメッセージです。

“`
FATAL ERROR: Reached heap limit Allocation failed – JavaScript heap out of memory
“`

このエラーは、JavaScriptプログラムが実行中にメモリ制限に達したことを示しています。

## 原因
JavaScriptヒープメモリエラーの原因は、プログラムが使用するメモリ量が多すぎるか、無限ループなどが原因でメモリが不足している可能性があります。

## 解決策
1. ヒープメモリサイズの調整
GitHub Actionsのワークフローで実行されるNode.jsのプロセスに対して、ヒープメモリのサイズを増やします。
“`yaml
env:
NODE_OPTIONS: –max-old-space-size=4096

元記事を表示

【OpenSSL】localhost を https 化する 自己証明書の作成方法

自己証明書(通称オレオレ証明書)の作成方法です :smiley:

## 1. CA用の秘密鍵を生成
このコマンドは、2048ビットのRSA秘密鍵を生成し、`localCA.key` というファイルに保存します。

“`bash
$ openssl genrsa -out localCA.key 2048
“`
– openssl genrsa: RSA 秘密鍵を生成するコマンド
– -out: 生成した秘密鍵の出力ファイル名 (例: localCA.key)
– 2048: 秘密鍵の長さ (ビット単位) (例: 2048ビット)

## 2. 秘密鍵と識別情報から証明書署名要求 (CSR) の作成
このコマンドは、以下の情報を設定した CSR を生成し、`localCA.csr` というファイルに保存します。

“`bash
$ openssl req -batch -new -key localCA.key -out localCA.csr \
-subj “/C=jp/ST=Osaka/L=Osaka-shi/O=\”Example Inc\”/OU=Foo/CN=

元記事を表示

Nodeのビルドインオブジェクトを拡張する

## 目的
配列の`remove`メソッドなど、JSのビルトインオブジェクトには存在しないメソッドを拡張して定義したい

## 問題点
こんな感じで関数を定義してもいいけど、
“`typescript
function remove(array: T[], removeElement: T): T[] {
return array.filter(element => element !== removeElement)
}

remove([‘a’, ‘b’, ‘c’], ‘b’) // [‘a’, ‘c’]
“`
やっぱり配列のメソッドとして拡張ができた方が、使いやすいし読みやすい。
swiftなら`extension`で、Kotlinなら関数の前にレシーバータイプを記述することで拡張関数を定義できる。
しかしTypescriptにはそのような文法はない。

## 解決策
まず配列のアンビエント宣言を追加し、型チェックができるようにする。
その後配列のprototypeオブジェクトに任意の名前で関数を代入する。
“`typescript
export {}

d

元記事を表示

Reactに星評価UIを実装する

## Reactに星評価UIを実装する

Reactで簡単に星評価UIを実装する方法を紹介します。この記事では、`react-icons`パッケージを使用して星のアイコンを表示し、`react-bootstrap`パッケージを使用してスタイリングを行います。

完成イメージ
![スクリーンショット 2024-03-19 053434.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680988/974d1529-8a49-ae63-2de9-3df97d772c74.png)

#### ユーザによる星評価:
– ユーザが星をクリックして評価を変更できます
– 通常はクリック可能な星アイコンを表示します

#### 星評価表示:
– ユーザの評価を表示するだけであり、評価を変更することはできません
– 通常はクリック不可能な星アイコンを表示します

### 1. `react-icons`のインストール

まず、`react-icons`パッケージをインストールします。

“`bash
npm ins

元記事を表示

SequelizeのonUpdateはPostgreSQLで機能しない

## 今回、罠にハマった問題
データベースがPostgreSQL、ORMにsequelizeを使った環境で、migrate機能を使ってテーブルを作成しました。
データの更新日時を記録したかったので、updated_atのカラムを追加したのですが、UPDATE文を発行してもupdated_atは更新されませんでした。

“` migration.js
updated_at: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.literal(‘CURRENT_TIMESTAMP’),
onUpdate: Sequelize.literal(‘CURRENT_TIMESTAMP’)
}
“`

(onUpdateがあるので日時は自動更新されそうな雰囲気ですが)

## 原因
PostgreSQLには、データの変更時に日時を更新する機能が備わっていない為、Sequelizeのmigrationファイルで設定してもデータベースには何も反映されていないと考えられます。

## 解決

元記事を表示

Mongo リストの合計数、条件付き範囲のクエリー

“`javascript:user.js

$project: {
_id: 1,

totalQuestClearCount: {
$reduce: {
input: { $ifNull: [“$quests”, []] },
initialValue: 0,
in: {
$cond: [{ $eq: [“$$this.storyId”, 0], $eq: [“$$this.totalClearCount”, 1] },
{ $add: [“$$value”, 1] },
“$$value”
]
}

元記事を表示

Azure Static Web Apps(Node.js) で、ストリームなChatGPTを構築する

# はじめに
ChatGPTなシステムを作るときに、Azure Static Web Appsは最善の方法の1つですが、これまではストリームができないという課題がありました。(.NETならできるんですが)

と、つい最近以下のアナウンスが出ました。
[Azure Functions: Support for HTTP Streams in Node.js is now in Preview](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/azure-functions-support-for-http-streams-in-node-js-is-now-in/ba-p/4066575)
これで、Node.JSのFunctionでStreamが扱えるようになったので、その動作をざっくり検証してみます。(Pythonも早くできるようになるといいですよねぇ)

上記ブログにもありますが、以下の前提条件が必要です。古い場合は適宜更新してください。
> – Version 4 of the Node.js programmin

元記事を表示

nvmコマンドでNodeのバージョンを簡単に切り替える方法

## 概要

– nvm(Node version manager)とは、Node を複数バージョン管理するためのユーティリティです
– この記事では、nvm を使用して Node のバージョンを追加・切り替方法について記載します
– [nvm](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating)の GitHub をベースに記載しています
– バージョンを簡単に切り替えられことによって、異なるバージョンでの動作確認や、異なるバージョンでの開発が可能になります

## 手順

1. nvm をインストールする
“`bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
“`
2. 環境変数を設定する
– 下記コマンドをそのまま実行する
“`bash
export NVM_DIR=”$([ -z “${XDG_CONFIG_HO

元記事を表示

Next.jsをGitHub挟んでCloudflare Pagesにデプロイする

# はじめに
色々詰まったので解決までかかった内容を全て書いておきます。Cloudflare C3を使ってプロジェクトを構築し、あとからGitHubを挟んだデプロイに変更してみます。
詳しくは理解していないので間違っている点あるかもしれないです。

https://developers.cloudflare.com/pages/framework-guides/nextjs/deploy-a-nextjs-site/

# 環境
* Ubuntu 22.04
* VirtualBox

(PC自体はWindows 11を使用)

まず最初にPowershellを試して、次にWSLを使ってみたがどちらも失敗してしまった。WSLについてはUbuntuを使ったが、“`npm create“`を行うとCMD.exeが起動してしまい、なんやかんやよくわからなかった。
ということでVirtualBoxにした。関連するエラーは以下のリンクに示す。

https://stackoverflow.com/questions/77152589/cannot-find-npm-on-appdata-ro

元記事を表示

Node.jsとは何か

Node.jsに関連する、npm、nvmが似たような言葉ばかりで理解しづらい。
大体の環境系トラブルはここに集約する(と思っている)ので、ほぼ自分用にまとめてみることにしました。

## 環境

– WSL 2
– Ubuntsu 20.04.6 LTS

## Node.jsとは

Javascriptをサーバーサイドでも使えるようにしたもの。ブラウザ側、サーバー側、双方で同じ言語が使えると効率が良いためよく使われている。

ただ、主に私がRuby on Railsを学習する中でよく出てくるNode.jsの役割とは、開発環境の補佐的な役割として使っていることが多いです。

– Node
JavaScriptを実行するためのエンジン。

– npm
Node.jsのパッケージを管理するためのツール。Node Package Managerの略。
npmを介して様々なパッケージをインストールできる。RailsでいうところのGemと同じような役割。

– nvm
バージョン切り替えツール。Node Version Managerの略。

元記事を表示

【toio】toio.jsでサンプルプログラムを動かすまでの手順について

## はじめに
「Node.jsって何?」というレベルのプログラミング初心者がtoioのJavaScriptライブラリで開発を始めるまでに、時間がかかったので、手順を備忘録としてまとめておきます。参考にして頂ければ幸いです。

## 動作環境
Windows11
Node.js:v20.11.0
npm:10.2.4
yarn:1.22.21

## 必要なもの
– Bluetooth USBアダプタ
Windowsで環境構築する場合、toio.jsが使用している「noble」ライブラリの関係で、内蔵Bluetoothではなく、**別途Bluetooth4.0 USBアダプタが必要**になります。
今回は、エレコムのアダプタを使用しましたが、問題なく動作しました。
[Bluetooth(R) USBアダプター LBT-UAN05C2](https://www.elecom.co.jp/products/LBT-UAN05C2.html)

詳細は[nobleの前提条件](https://github.com/noble/noble?tab=readme-ov-file#wind

元記事を表示

WSL Ubuntuにnodenvにinstallする方法

# WSL Ubuntuにnodenvにinstallする方法

WSL Ubuntuに[nodenv](https://github.com/nodenv/nodenv)をinstallする方法

## updateとupgrade

“`bash
sudo apt update && sudo apt upgrade -y
“`

## nodenvのinstall

“`bash
git clone https://github.com/nodenv/nodenv.git ~/.nodenv
cd ~/.nodenv && src/configure && make -C src
# 環境変数の設定
echo ‘export PATH=”$HOME/.nodenv/bin:$PATH”‘ >> ~/.bashrc
echo ‘export PATH=”$HOME/.nodenv/bin:$PATH”‘ >> ~/.bash_profile
echo ‘eval “$(nodenv init -)”‘ >> ~/.bashrc
“`

## pluginのinstall

元記事を表示

OTHERカテゴリの最新記事