Node.js関連のことを調べてみた2022年02月06日

Node.js関連のことを調べてみた2022年02月06日
目次

Node.jsでTCP/UDPソケットのIPv4・IPv6両対応は簡単に実装できる

初投稿です。

# 経緯
Node.jsでUDP双方向通信プログラムを書いている上で何故だか急にIPv6対応したくなってきました。

しかし、IPv4の方が未だ多く使用されているため、IPv4を捨てることもできず、IPv6と両方対応できるソケットはないか探してみました。

# TL; DR

## UDP

まずソケットをudp4からudp6にします。

“`js
const socket = dgram.createSocket(“udp4”);
“`
“`js
const socket = dgram.createSocket(“udp6”);
“`

そして、待受アドレスを`0.0.0.0`から`::`に変更します。

“`js
socket.bind(PORT, “0.0.0.0”);
“`
“`js
socket.bind(PORT, “::”);
“`

これだけです。
こうすることでIPv4・IPv6両対応のソケットを立てることができます。

## TCP

プログラムの書き換えは必要ありません。
接続先アドレスをIPv6に指定するだけで勝手にIPv6で接

元記事を表示

Expressを使ったWebサーバーにTLSの設定を追加してみる。

Node.js Expressを使って開発していたWebサーバーにSSLの設定を追加できたのでその方法について投稿いたします。

### 流れ
1. OpenSSLのインストール
2. 秘密鍵とSSL証明書ファイルの作成
3. サーバー設定ファイルにTLS有効化の設定を追加

### OpenSSLのバージョンについて
OpenSSLのバージョンは、LibreSSL 2.8.3 で設定いたしました。

ソースコードとプルリクエストについては、下記の通りです。
ソースコード
プルリクエスト

### 1. OpenSSLのインストール
まずは、OpenSSLをインストールします。
Mac OSなら下記コマンドでインストールします。
brew install openssl

### 2. 秘密鍵とSSL証

元記事を表示

[守] TypeScriptことはじめ

## はじめに

対象はTypeScript初学者(私)。TypeScript開発において必要最小限のコマンドや手順を備忘としてまとめておきます。「[WEB+DB PRESS Vol.117 / 実践投入TypeScript](https://gihyo.jp/magazine/wdpress/archive/2020/vol117)」を参考とさせていただきました。「もっとこうするとよいよ」のようなものがあればコメントいただけると嬉しいです。

※本記事記載のコード、コマンドの最終検証日は2022/02/05、実行環境のNode.jsはv16.13.2、TypeScriptコンパイラはv8.3.2。

## 開発環境を整備する

### 前提条件

– Node.jsがインストールされていること

### 実行手順

プロジェクトのホームディレクトリを整備後、Node.js環境を初期化、TypeScript開発に必要最小限のnpmパッケージをインストールし、TypeScriptコンパイラの設定ファイルを生成します。

“`sh

元記事を表示

pm2で–tls-min-v1.0オプションを使う

タイトルの通りです。
ネット上に情報があまりないようなので共有します。

~~~
node –tls-min-v1.0 app.js
~~~
で実行しているjsをpm2で使う方法は以下の通りです。

~~~
pm2 start app.js –name app –node-args=”–tls-min-v1.0″
~~~
これで起動しておけば、

~~~
pm2 restart app
~~~
で再起動しても「–tls-min-v1.0」オプションは有効のままです。

元記事を表示

【2022年版】MacにNodejsをインストールする方法

# はじめに
M1チップのMacbookでNodejsをインストールする方法をまとめた

# Homebrewをインストール

“`
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`
※Homebrewをインストール済みの方は次の手順へ

https://brew.sh/index_ja

インストール後は、次のコマンドでbrewコマンドが使えることを確認

“`
brew -v
“`
コマンドが使えない場合は下記参考

https://qiita.com/wooooo/items/6d8a7de5ffafed1cc66c

# Nodebrewのインストール
“`
brew install nodebrew
“`

インストール後は下記のコマンドでバージョンを確認

“`
nodebrew -v
“`

続いて下記のコマンドを実行

“`
nodebrew setup
“`

下記のコマンドを実行し、Nodejsをイ

元記事を表示

もろもろ整備されたサンプルプロジェクト作成の手順のまとめ (github + monorepo + nextjs + commitlint + lint-staged + prettier + eslint + editorconfig)

## 環境構築からプロジェクト作成まで

自分でnextjsのプロジェクトを作るとなった際に、どうやってセットアップしたらいいかわからない、という声が多かったので、一例として[このプロジェクト](https://github.com/taijusanagi/nftcert)のセットアップ手順を各記事ごとにまとめてみました、

### github repository

まずはgithub repositoryを作ります。

https://qiita.com/taijusanagi/items/f71a088983fa08637fe1

### husky

次にhuskyの設定を入れます

https://qiita.com/taijusanagi/items/bd44d32efdba980f3f20

### commitlint

次にcommitlintの設定を入れます

https://qiita.com/taijusanagi/items/4117e9c621186b254a9f

### yarn monorepo

次にmonorepoの設定を入れます

https:

元記事を表示

aws-sdk-mock でモック化できない問題が発生

実務でLambdaのコードの単体テストをしていて、aws-sdk-mockを使ってDynamoDBへのアクセスをモック化しようとしてもモック化されず困ったのですが、先輩に解決していただいたので、詰まった原因をシェアします。

##テスト環境
– MacOS 11.6.2
– NodeJS v16
– jest v27.4

##ソースコード
以下の記事を参考にして書きました。

– [【AWS】aws-sdk-mockでLambdaテストを行う](https://makky12.hatenablog.com/entry/2020/12/25/070000)

コード

“`put.js
const AWS = require(‘aws-sdk’);
const docClient = new AWS.DynamoDB.DocumentClient();
AWS.config.update({“region”: “ap-northeast-1”});

exports.handler = async (event) => {
return await Promise.all(

元記事を表示

monorepo環境にnextjsを構築する備忘録

## nextjs

nextjsはreactのフロントエンドの開発フレームワークです。

今回は[こちらのプロジェクト](https://github.com/taijusanagi/nftcert)をセットアップする際に、nextjsの構築をおこなったので、備忘録として残します。

## 注意

こちらの記事でmonorepoを設定した後にnextjsを導入しました。

https://qiita.com/taijusanagi/items/cfd6ff7ba72e65439b66

monorepo環境下で実行すると下記のようなエラーが出ました。

“`
warning Missing version in workspace at “/Users/taijusanagi/Documents/workspace/taijusanagi/nftcert/packages/frontend”, ignoring.
error An unexpected error occurred: “Cannot read property ‘manifest’ of undefined”.
`

元記事を表示

yarnのmonorepo構築の備忘録

## monorepo

この記事ではyarnを利用したmonorepo構築の備忘録です。

package.jsonに下記を追加します。

“`
// package.json

“private”: true,
“workspaces”: [
“packages/**”
],
“`

そして、packagesというディレクトリを作成して、その下に再度ディレクトリを任意の名前で作成し、package.jsonを作成します。

![Screen Shot 2022-02-05 at 12.45.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258956/4cc7ffc5-17c7-0bc3-e8ff-2c09ae13b413.png)

このpackage.jsonにはversionを指定することが必須となっており、またnameに指定した部分がmonorepoのワークスペースの名前となります。

今回は、“`@nftcert/sample“`がワークスペースの名前で

元記事を表示

Commitメッセージをチェックするcommitlintの設定の備忘録

## commitlintとは

[Commitlint](https://commitlint.js.org/#/)は、Commitメッセージを特定のルールで守らせるための設定を行うためのツールです。Commitlintの設定手順についてチーム内で共有することが多かったので備忘録として残します。

詳しくルールをカスタマイズすることはできるのですが、この記事では既存のルールセットをそのまま利用し、動かせるようになることを目標としています。

package.jsonが置いてあるプロジェクトルートで下記を実行します。

“`
yarn add -D @commitlint/cli @commitlint/config-conventional
“`

devDependenciesに下記が追加されます。

“`
//package.json

“devDependencies”: {
“@commitlint/cli”: “^16.1.0”,
“@commitlint/config-conventional”: “^16.0.0”,
}
“`

元記事を表示

スクリプトをhook実行させるためのHuskyに関する設定の備忘録

## Huskyとは

スクリプトを特定のタイミングで実行させるためのツールです。

https://github.com/typicode/husky

今回は実際に[こちらのプロジェクト](https://github.com/taijusanagi/nftcert)をセットアップとしてhuskyを導入していきます。

こちらの記事に記載されているセットアップ手順を使用します。

https://typicode.github.io/husky/#/

“`
npx husky-init && yarn
“`

上記を実行すると、package.jsonに下記のようにhuskyが追加されます。

“`
“devDependencies”: {
“husky”: “^7.0.0”
},
“scripts”: {
“prepare”: “husky install”
}
“`

こちらのpre-commitというファイルに、npm testというscriptが記載されているのですが、こちらのpre-commitはcommitを行う前に特定のコマ

元記事を表示

買ったばかりのM1 MacにNodejsの開発環境をセットアップする手順の備忘録

## 開発環境構築

チーム内で新しいメンバーに開発環境の構築から初めてもらうことが多いので、メモにしました。ある程度わかる人はググりつつ公式の記事を読みつつ進めていく方がいいのかなと思いますが、開発を始めたばかりで難しい人向けに備忘録として残しています。

こちらの記事では下記について紹介します。

– vscodeのインストール
– homebrewのインストール
– nvmのインストール
– nodejsのインストール
– yarnのインストール

### vscodeのインストール

コードエディタであるvscodeをインストールしていきます。今回セットアップしようとしているnodejsでコードを書く場合にはvscodeを使用することが多いです。

こちらのvscodeのページにアクセスします。

https://code.visualstudio.com/

こちらのダウンロードをクリックして

![Screen Shot 2022-02-05 at 10.34.37.png](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

DynamoDBでデータがあるのに取得できない時に疑うこと

## 環境
– Nest.JS
– DynamoDB
– ※環境は関係なさそうなのでバージョン等は割愛

## 事象
DynamoDB上にデータは存在するにも関わらず、データが取れない事象がありました。
「Between句が効いていないのでは」
「timestampがおかしいのでは」
「GSI(グローバルセカンダリインデックス)が効いていないのでは」
などと疑いましたが、どれも正しく設定されていました。

## 結論
DynamoDBは、クエリー・スキャン共に1回のリクエストで最大1MBまでしかレスポンスできない制約がありました。

参考: https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Limits.html
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360277/da25c83b-110b-8df6-d65a-ad6d82f4cddb.png)

## 解決方法
DynamoDBのレスポ

元記事を表示

タスクスケジューラーでwsl上のnodeスクリプトを実行する

# タスクスケジューラーで新規のタスクを作成する

わかるだろうから書かん!

# タスクの詳細の「操作」タブ

#操作を作る

以下の内容を設定する
①:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
②:node index.js
③:\\wsl$\Ubuntu-20.04\home\user\docker\path-to\node
![2022-02-05_00h30_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1681950/16954877-8fcd-b002-306d-2c69a237f946.png)

![2022-02-05_00h28_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1681950/e6f13804-82f7-506f-9eb0-d30227077b9e.png)

これで完成!

元記事を表示

【NestJS初心者】管理画面API作ったよって話① 〜環境構築って大変〜

Nest.jsに慣れるために
Nest.jsを使って、管理画面APIを作ってみたいと思います〜!

#### Let’s start?

## 環境
– Node.js v15.0.0 -> v16.10.0
– MySQL
– macOS

##インストール
以下のコマンドでNest CLIをインストールし、プロジェクトを作成します。

“`
$ npm i -g @nestjs/cli
$ nest new TodoApp    // nest new [プロジェクト名]
⚡ We will scaffold your app in a few seconds..

CREATE …..
CREATE …..
CREATE …..
.
.
.
“`
![スクリーンショット 2022-02-04 20.07.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518047/792c0652-a96c-92f5-6068-1b97da092b3f.png)
どのパッケージ

元記事を表示

REST API(Node.jsのExpressで実装)のエラーハンドリングを共通化してみる

## 以下の記事を参照して頂ければと思います

https://note.com/shift_tech/n/neeb0b7f17627

**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です**

## 補足
ソースコード全体は以下を参照。

https://github.com/yuta-katayama-23/node-express/tree/3123743c8c53f4b8420f19de3c5223c331e425c8

元記事を表示

【obniz×圧電スピーカー】処理(曲)コードをまとめました。 #マンボ #Disney

obniz1Yと圧電スピーカーを使って今まで実装してきた曲のコードのみを公開します。
自分で楽しんでもよし!他の事に使ってもよし!

実際に使った記事は以下になります。

https://qiita.com/yui-kouy/items/d7959be61262a714833f

※obnizの0と1へ圧電スピーカーをつないで使用するソースコードを記載します。

#音符・休符の長さ、音階周波数について
##音符・休符の長さ
音符・休符の長さは、全音符・全休符の長さを基準として定数にします。
【参考】[バンド・スコアの小楽典 – 2. 音譜・休符・拍子](https://www.doremi.co.jp/gakufu_no_mikata/gakufu/basic2.ht

元記事を表示

サーバーサイド環境構築(Node.js + Typescript)

## ss環境構築

##### まっさらな状態からcurlを叩いて「Hello World」を表示する

## src > app.ts

import express from “express”

const app = express()

app.use(express.json())

app.get(“/”, async (_req, res) => {
res.end(“Hello World”)
})

const port = 8080
app.listen(port, () => {
// eslintでconsoleのエラーが出ないよう下記を追加
// eslint-disable-next-line no-console
console.log(`Listening on port ${port}`)
})

## dependencies

#### コマンド
`yarn add express`:サーバーサイド Javascript の実行環境

元記事を表示

npm ERR! code E404からやっと抜け出せた;;

ハマりにハマったnpm install

npm install でずっと「npm ERR! code E404」から抜け出せずにいたが半日後にやっと解決・・・

プログラミングを学び始めた自分にとってかなり辛かった・・・

npm ERR! code E404

$ npm install --save-dev typescript ts-loader webpack webpack-cli webpack-dev-server

npm ERR! code E404
npm ERR! 404 Not Found - GET http://registry.npmjs.org/typescript
npm ERR! 404
npm ERR! 404 'typescript@latest' is not in the npm registry.
npm ERR! 404 You should

Lambdaの明瞭な出力ログ [Python, Node.js]

#はじめに
Lambdaの出力ログは、CloudWatchLogsで確認しますが、json形式の明瞭なログ出力を書き留めます。

#Python
DynamoDBの数値を取り出す際、データとしてDecimal(数値)として取り出されますが、json.dumpsを実行すると、エラーが起きました。
そのため、Decimalを取り除くロジックをつけています。

`ensure_ascii=False`は、文字化け対策です。

```python
import json
from decimal import Decimal

# json形式でログを出力するため、Decimalがある場合取り除く
def decimal_to_int(obj):
if isinstance(obj, Decimal):
return int(obj)

def lambda_handler(event, context):

print("Received event:" + json.dumps(event, default=decimal_to_int, ensure_ascii