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

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

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

元記事を表示

同じexpressのプロセスでドメインごとに違うページを表示する

# はじめに
– expressでサーバーを起動
– example1.jpとexample2.jpで別のサイトを表示したい
– おなじNodeJSのプロセスで複数ドメインを扱う方法で悩んだ

# 解決策
Routerというもので分岐ができるらしい
ドメインでも分岐できないか?
→使い方が正しいかわからないけど下のコードで解決!

# コード
“` index.js
const express = require(“express”);
const app = express();

// ドメインごとに読み込む
const domain1 = require(“./example1.js”);
const domain2 = require(“./example2.js”);

app.use( (req, res, next) => {
// アドレスのホスト名(ドメイン)
var host = req.hostname;

if( host == “example1.jp” ) {
// routerに飛ばす
domain1(req, res,

元記事を表示

nodejsサーバーをsystemdに登録する!

# はじめに
– linuxにSSHを使って接続中
– コマンドでサーバーの起動・停止をしたい
– 再起動したときにサーバーを自動で起動するようにしたい!
– nodejsのサーバーをコマンドラインで起動していて、再起動するときに毎回`Ctrl+C`→`node index.js`はめんどくさい!

# 1. systemdへの登録
nanoなどで下のファイルを作成して編集します
`sudo nano /etc/systemd/system/myNodeServer.service`

“` sh: /etc/systemd/system/myNodeServer.service
[Unit]
# プログラムの名前
Description= Node.js Server

[Service]
Type=simple
User=username
# nodejsの動いているディレクトリ
WorkingDirectory=/home/username/Desktop/node/
# 起動するためのスクリプトの配置先
ExecStart=/home/username/Desktop/nod

元記事を表示

Docker上で動かしているWebサーバーのログが見たい

# 前提
– DockerはDocker composeを使用
– WebサーバーはNode.js + pm2

# 結論
“`sh
$ docker compose logs [サービス名]
“`

# ハマったとこ
Docker間で通信を行っている処理があり、その通信が失敗していたためその検証がしたかった。
しかし、Docker内でのログの出し方が分からず、余計な時間を割いてしまったため、記録しておく。

### ハマった原因
– 自分がそもそもDockerで動いているNode.jsのログの見方を分かってなかった

### 解決した経緯
– pm2を利用していることを知っていたので、pm2のログが出せることを知ったため

– 最初に上記の方法でログが出せることを確認した
– `$ docker compose log`でも同じようにログを出せることがわかった

https://matsuand.github.io/docs.docker.jp.onthefly/engine/ref

元記事を表示

[初心者向け]Nest.jsでSwaggerを使ってAPIドキュメントを自動生成する方法について徹底解説!便利なデコレータの使用方法も解説

## 概要
Swaggerを使ってNest.jsのAPIのドキュメントを自動生成する方法について解説します

## 前提
– Nest.jsのアプリケーションを作成済み
– APIを作成済

## 必要なパッケージのインストール
@nestjs/swaggerをインストールします

“`
npm install @nestjs/swagger
“`

## Swaggerの設定
main.tsに以下のようにSwaggerの初期設定を行います
今回は127.0.0.1:8000/api/docsへアクセスするとSwaggerが起動します

“`main.ts
import { NestFactory } from ‘@nestjs/core’;
import { SwaggerModule, DocumentBuilder } from ‘@nestjs/swagger’;
import { AppModule } from ‘./app.module’;

async function bootstrap() {
const app = await NestFactory.c

元記事を表示

SendGrid Webhookを用いて送信失敗メールをキャッチする

## はじめに
SendGrid APIを用いて送信したメールのうち、送信失敗したメールをキャッチしたかったので、方法を模索し実装しました。
実用性のあるメソッドだと思うので、記事として残そうと思います。

## SendGridとは
サーバーを構築せずにAPIベースでメール送信をできるプラットフォームです。
導入はとても簡単です。詳しくは下記ページを参照。

ホーム

## Webhookとは
外部アプリケーション連携手段の一つです。
APIと異なり、こちらから通信を行うのではなく、外部アプリケーション側から情報を送ってもらいます。
API通信の場合はこちらから都度通信を行わないと情報を取得できません。したがって、外部アプリケーション側でトリガーを持っており、リアルタイムで情報を取得したいときにWebhookが有用です。
下記記事の説明がわかりやすかったです。

https://qiita.com/soarflat/items/ed970f6dc59b2ab76169

## SendGridでのメール送信
SendGridでメー

元記事を表示

Lambda Node.js serverlessを使うほどでもないちょっとした関数を書きたいときのDocker環境を作ってみた

## 概要

Lambdaにて小規模なコードを記載したい場合にちょっと楽できるようなDocker環境を作ってみました。

## 発端

小規模な処理(例えばSESのバウンス情報をSNSからLambdaを経由してSlack通知したい場合)をLambdaで使いたい場合、下記のようなジレンマがある。
– Lambdaのブラウザのエディタで書くのはなんかテンションが上がらない、普段から慣れてるエディタを使いたい。。。
– serverlessだとリッチ過ぎる、学習コストもかかる。。。
– 慣れてるエディタで書こうとしてローカルPCのNode.jsを使って書くと、複数の開発者がいる場合バージョン合わせが大変。。。

Dockerならこの辺を一挙に解決できるのではと思い今回環境を作ってみました。

## 御託はいい、早くその環境をよこせ

もちろんどうぞ!
↓こちらから取得いただけます。完全にフリーで利用いただけます。おそらく利用方法はREADMEを呼んでいただければ大丈夫だと思います!

https://github.com/miriwo0104/nodejs_20_lambda_local_d

元記事を表示

nodeでテンプレートエンジンっぽいものを作った

## 背景
同じようなページを複製したいけど、それだけのためにEJSやPugを入れるのも面倒。。。
じゃあ自分でサクッと作ろう!

## 環境
node 20.10.0
npm 10.2.3

## 前提
以下のポケモン151匹のデータが入ったJSONをもとに、 (JSONは記事最下部に記載)
“`pokeData.json
[
{
“no”: 1,
“name”: “フシギダネ”,
“abilities”: [“しんりょく”],
“stats”: {
“hp”: 45,
“attack”: 49,
“defense”: 49,
“spAttack”: 65,
“spDefense”: 65,
“speed”: 45
}
},
{
“no”: 2,
“name”: “フシギソウ”,
“abilities”: [“しんりょく”],
“stats”: {
“hp”: 60,
“attack”: 62,

元記事を表示

express-sessionとMemcachedでセッション管理する方法

Node.jsのExpressでセッションを管理したい場合、”express-session”パッケージを使用します。また、サーバー側のセッション情報の保存はMemcachedを使用します。

ローカルの開発環境で動作させるには、Memcachedをインストールして、サービスを起動しておく必要があります。
Macで環境を構築する方法は前回の記事を参照してください。

前回:[Macにmemcachedをインストールする](https://qiita.com/SolitaireEgg/items/01c88221fd4a9fc6d36a “Macにmemcachedをインストールする”)

## インストール

Node.jsおよびExpressはインストールされている前提で、新たに下記3つのパッケージをインストールします。

“` console.sh
npm install express-session
npm install memcached
npm install connect-memcached
“`

## Expressに設定を追加する

“` app.js
c

元記事を表示

Discord.jsでプログラムがエラーを吐いても起動させ続ける

# 前置きの前置き
何と
“`js
process.on(‘uncaughtException’, err => console.log(err))
“`
**このコードをどこかに書いておけば大丈夫だそうです**
(つまりこれはただのライブラリ紹介)
# 前置き
多分初投稿のumisoraです
PCの起動時に.batでbotも起動できるかなーとか思いながら調べていましたら
pm2というライブラリを見つけたので忘備録 + 紹介です…!
# 仕組み(ざっくりと)
どうやらエラーを吐いたプロセスをもう一度起動する仕組みのようです
もっと詳しく知りたい方は調べてみるといいかもしれません
# 結局どうやるの?
やり方はいたって簡単
まずはnpmでpm2をインストールします
“`bash
npm install pm2 -g
“`
そしたら皆さんいろんなランタイムを使ってるかもしれませんが起動コマンドを
“`cmd
pm2 start [botが起動するファイル名(拡張子省略不可)]
“`
とします(一応cdかなんか使ってbotが起動するファイルのあるディレクトリで実行してください

元記事を表示

Node.jsでGmailAPI認証設定

## 概要
– Gmailアプリを簡単に作成する方法を書いておく
– ほかのGoogleAPI系の参考になればなおよい

## Google Cloude上の操作
Google Cloud上の操作については、こまごまとしたUIの変更が速いため本記事では明確に扱わない。
参考までに、以下の記事を提供しておくがボタンが消失しているものもあるため注意が必要である。

https://dotstud.io/blog/gmail-api-from-nodejs/

:::note warn
クライアントIDを作成する際に「その他」がなくなっているため、本記事ではそこを **「WEBアプリケーション」** として進めていく
:::
:::note alert
リダイレクトurlを何かしら設定しないと後の認証が通らないため、**http://localhost** を設定する必要がある
:::

## ライブラリのインストール
適当なフォルダを準備したのち、必要なライブラリをインストールする
“`
npm i googleapis google-auth-library –save
“`

元記事を表示

Node.js でタイプスクリプトを導入する早見表

## 概要
– 新規プロジェクトを始める際に簡単に導入ができるようにコピペ用のスターターを作成する

## 1. フォルダ作成とnpmの初期化
“`sh
# フォルダの作成
mkdir myproject
# 作成したフォルダに移動
cd myproject
# npm の初期化
npm init -y
“`
## 2. TypeScriptのインストール
“`sh
# コンパイラの導入と型定義の追加
npm install –save-dev typescript @types/node
“`
## 3. TypeScriptの設定ファイルの作成
“`json:tsconfig.json
{
“compilerOptions”: {
“target”: “es6”,
“module”: “commonjs”,
“rootDir”: “./src”,
“outDir”: “./dist”,
“esModuleInterop”: true,
“strict”: true
},
“include”: [
“./

元記事を表示

【Windows環境】DockerでNode.js+Express+Postgresの爆速コンテナ構築

## 【Windows環境】DockerでNode.js+Express+Postgresの爆速コンテナを作る~ロングストーリー

Docker、ややこしいねえ。書いてある通りにやってもうまくイカン事多いネ。WindowsでやろうとするとWSLが絡むから尚ややこイ。自分なりに試行錯誤してあくまで自己流ですんで自己責任で参考にしてください。

## Windows+WSL環境でデフォルトでコンテナ作成するとパフォーマンスがめっちゃ悪い

まず、普通にWindows上のどこかに開発環境(プロジェクトレポジトリ)を置いてそれをDockerコンテナ化するとパフォーマンスがめっちゃ悪い。さらにビルドされたDockerイメージのサイズが巨大:cold_sweat:
(:warning: VSCodeから「新しい開発コンテナの作成」メニューでコンテナ作るとこうなるヨ。それとも裏技あるのだろうか…?)

###### 簡単に言うとWindows上のファイルシステムはWSL Ubuntuでは `/mnt/Ubuntu/c/*` としてマウントされており、そのファイルシステムがWSL Ubuntu自身のフ

元記事を表示

TypeScriptのための新しいパッケージレジストリ「JSR」の素晴らしさ

## 概要

この記事ではDenoからリリースされた新しいパッケージレジストリであるJSRについて紹介します。JSRはTypeScriptとES Modulesで実装されたパッケージのためのレジストリです。

https://jsr.io/

JSRを利用することで以下のようなメリットを享受しながらパッケージを利用した開発を行うことができます。

– ソースコードをもとにした充実したドキュメント
– ライブラリの実装をエディタ上で直接確認

## JSRの仕組み

JSRにはTypeScriptとES Modulesで実装されたパッケージのソースコードを直接アップロードします。JSRのWebサイト上でこのソースコードやコメントから自動生成されたドキュメントを読むことができるようになっています。例えばWebサーバライブラリのoakのページを見てみましょう。

https://jsr.io/@oak/oak

![oak_top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458395/c2f6617d-

元記事を表示

【小ネタ】Node.js v21.7.0 の新機能で環境変数用のファイル読みこみを軽く試す: process.loadEnvFile()

今回の記事は、記事執筆時点での Node.js の最新バージョンである v21.7.0 の新機能の話です。

●Node.js — Node v21.7.0 (Current)
 https://nodejs.org/en/blog/release/v21.7.0

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/a2a69d3c-0dc3-de7e-9c5c-6c6e3a577095.png)

新機能はいくつかあるのですが、その中でも、「process.loadEnvFile(path)」という項目の話です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/772580e7-0bc7-fe7d-57cd-a7a694e29d5f.png)

## サクッと試す
それでは、軽く試していきます。

### path の指定なし
以下のファイルを用意して試してみます。

元記事を表示

【AWS】Pinpointの通知をLambdaで設定する(キャンペーンを作成する)

## Pinpointがリファレンス通りに動いてくれなかった話

::: note warn
注意:この検証を行なったのは 2023年2月17日 です
:::

### 時間指定のプッシュ通知を作成するための 3つ のパラメータ

以下3つです
“`node.js:
startTime : ‘YYYY-MM-DDThh:mm+09:00’ // *1
Timezone : ‘UTC+09’ // *2
isLocalTime : false // *3
“`

#### *1 startTime | プッシュ通知を行う時間を指定

ISO 8601 を厳守する必要があります
– 通知したい時間を `YYYY-MM-DDThh:mm`(2024-03-09T09:06)と記載
– 末尾に日本時間を意味する `+09:00` を記載

#### *2 Timezone | 時差を表す値を入れる

~~リファレンスには「TimeZone」と書かれてますが「Timezone」が正しいです。現在は修正されていました~~

これを指定しないと **日本から9時間遅れ** で通知されます

元記事を表示

ESP32で気兼ねなくHTTPS通信する

ESP32でHTTPS通信はできなくはないですが、かなりメモリを消費するため、結構不安定だったりします。
また、HTTP通信といっても、GETやPOSTの中でも、単にJSONをBodyに含めたものだけでなく、multipart/form-dataであったり、application/x-www-form-urlencodedであったり、送信方式にも種類があります。それをESP32の中でそれぞれ実装するのは面倒です。

そこで、HTTP通信をHTTPS通信にブリッジしてくれるサーバを別途用意することで、ESP32ではTLS通信を意識する必要がないようにします。
また、ESP32とブリッジサーバとの通信方式はJsonをボディとしたHTTP POST通信に限定し、ブリッジサーバにて各種Content-Typeに合わせてその先のHTTPS通信をしてくれるようにすれば、HTTP Post(JSON)だけを実装すればよいので楽になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/

元記事を表示

Nest.jsでロギング用のMiddlewareを実装しよう!

## 概要
ロギング用のMiddlewareを作成することでAPIを実行するたびに共通のログを出力できるのでとても便利で実装方法について解説します

## 前提
– Nest.jsのアプリケーションを作成済み

## ディレクトリ構成
“`
tree
.
└── application
├── README.md
├── common
│ └── logger.middleware.ts
├── nest-cli.json
├── package-lock.json
├── package.json
└── src
├── app.controller.ts
├── app.module.ts
├── app.service.ts
└── main.ts
“`

## 実装
ロギング用のMiddlewareを実装する際に
– logger.middleware.ts
– main.ts

を作成および編集する必要があります

### logger.middle

元記事を表示

Slack の CLI と無料サンドボックス環境でサクサク快適開発

こんにちは、Slack の[公式 SDK 開発](https://github.com/slackapi)と日本の Developer Relations を担当している瀬良 (@seratch) と申します :wave:

## サンドボックス環境が使えるようになりました

米国時間 3/6 にサンフランシスコで開催された TrailblazerDX にて、Slack の新しい開発者向けサポート機能が発表されました。

https://slack.com/intl/ja-jp/blog/developers/developer-program-launch-jp

Bolt for Python / JavaScript でのカスタムファンクションなどのトピックもあるのですが、この記事ではこれまでよりもはるかに簡単な取得・管理が可能となった Enterprise Grid の**サンドボックス環境を使ったローカル開発の方法**について紹介したいと思います。

## 何が嬉しいの?

今までの Slack アプリ開発は、最初に以下のような手順が必要でした:

* https://api

元記事を表示

Node.jsでCSVファイルを読み込む方法

# はじめに
`Node.js`でCSVファイルを読み込む実装をしたので、備忘録として記事にしたいと思います。
`TypeScript`で実装しているので、`Node.js` + `TypeScript`で、CSV読み込みを実装したい方の参考になれば幸いです。

# 必要なパッケージをインストール

`csv-parse`を使うので、以下をターミナルで実行してください。

“`bash
npm install csv-parse
“`

`Node.js`でCSVファイルを読み込むパッケージはいくつかあるそうです。
気になる方は以下をご参照ください。

https://qiita.com/t-yama-3/items/ab488c5a026de3cc92ab

# CSVを作成
“`
ts_demo // プロジェクトのルート
├ dist // コンパイルしたjsファイルを格納
├ src // tsファイルを格納
├ package.json // package.json
└ users.csv // 読み込む

元記事を表示

OTHERカテゴリの最新記事