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

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

discord.jsでGlobalBanを作る

# はじめに

環境
nodejs v16.15.1
discord.js v13.7.0
エディター : Visual Stadio Code

著者は上記の環境でテスト、実行しています
上記以外のバージョンでのテスト、実行はしていないのでご了承下さい

# 動機

**私はGlobalBanがしたい!!!!**

私が作成しているbotは地道に導入数を増やし今は導入数150。
150サーバーにも入っていると私の方にも荒らしやdiscordの規約違反をしているユーザーの通報がちょくちょく来ます

そろそろ荒らしへの処置をしてもいいのではないか!?
という流れで私はGlobalBanのコードを作成すると決めました。

# コード
“`config.json
{
“token” : “token”,
“prefix” : “!”,
“admin” : [“自分のid”]
}
“`

“`index.js
const {
Client,
MessageActionRow,
MessageSelectMenu,
MessageBu

元記事を表示

textlintのセットアップ&使い方

## 「textlint」とは?

Node.js製の自然言語リンターです。
ルールは1つもバンドルされておらず、様々なルールを自分でインストールして使うのが特徴です。

## 環境

– OS:macOS Monterey 12.4
– Node.js:v16.15.1
– textlint:v12.2.1

## セットアップ

textlintやルールをセットアップします。

### textlint

まずはtextlint本体をセットアップします。

https://github.com/textlint/textlint

#### インストール

textlintはNode.js製なのでnpmでインストールします。

“`shell-session
$ npm install textlint –save-dev
“`

私はローカルにインストールし、 `npx` を付けて実行しています。
グローバルにインストールする場合は `–location=global` を付けてください。

開発時のみ使うので `–save-dev` を付けています。

#### 設定

元記事を表示

API Gateway、Lambda(Node.js)、DynamoDB を使ったAPIの作り方

API Gateway、Lambda、DynamoDB を使ったAPIの作り方を備忘録も兼ねて記載します。
プログラム言語にはNode.jsを利用します。

# システム構成
システム構成は以下のようになります。
![AWS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348676/d172c951-87f7-ef41-4bb4-cf660f65d99b.png)

# システム概要
今回はサンプルとして、DynamoDBに格納されているイベント情報をPOSTリクエストで取得して、Jsonを出力するAPIを作ります。

# 1. DynamoDBにテーブルを作成
最初にイベント情報を格納するテーブルを作成します。
![dynamodb1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348676/c813f1e4-6c70-8b35-a53a-57a532ede10a.png)

テーブル名は **event**、

元記事を表示

asdfインストール中に書いた備忘録

# はじめに

ここと最後の「おわりに」は備忘録を書いた後の追記です。備忘録だけでは伝わらないかなーと思ったので、色々と書き足しておきます。

私の環境:

– M1 MacBook Air
– シェル: Zsh
– [Oh My Zsh](https://ohmyz.sh/)使用
– バージョン管理ツール: [Homebrew](https://brew.sh/index_ja)

この備忘録を書くに至った流れ:

1. HomebrewでNode.jsのバージョン管理するの難しいな
1. asdfっていうのあるらしいね
1. 触ってみるか
1. いつでも消せるように備忘録書こう

それではお楽しみください。

# asdf触ろう

entrypoint:

– [asdf-vm/asdf: Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more](https://github.com/asdf-vm/asdf)
– [Getting Started | asdf](ht

元記事を表示

銀行振込やカード決済に対応した請求書を、StripeのAPIを利用して作成する

会社や個人事業を営む中で、欠かすことのできない業務の1つが「請求業務」です。

請求書を発行して顧客に送付し、入金ができたかの確認や支払い方法の変更相談に対応する、etc…

これらの業務を効率化するために、システムを利用したり開発している方も多いのではないでしょうか。

今回の記事では、Stripe APIを利用した請求書の作成・送付方法について紹介します。

## 請求書を発行するコードの実装方法

まずは請求書を作成する部分のコードです。

### Step1: Customerデータを作成する

まずはStripeに顧客データを登録します。
このとき、以下の情報が最低限必要です。

|データ|必須|用途|
|:–|:–|:–|
|Email|必須|請求書のメール送付などに利用します|
|請求先住所|Taxを使っている場合必須|Taxによる税額計算に利用します|

“`js
const customer = await stripe.customers.create({
email: ‘text@example.com’,
// Str

元記事を表示

Node.js Expressでlog4jsを使ってログ出力するmiddleware(logger)を組み込んでみた

## はじめに
アプリケーションの開発時にはlog出力は必須となると思います。今回は、そのlogの種類としてはどんなものがありその役割は何か?を理解しつつ、実際にlogger(アプリケーションログ出力用、アクセスログ出力用)を作成していくという事をやってみました。

ソースコード全体は以下。

https://github.com/yuta-katayama-23/post-restaurant-reviews/commit/cc3a7131cad714f6e3a95e5c81ce4adf78f6c6aa

https://github.com/yuta-katayama-23/post-restaurant-reviews/commit/6175b44c94e97f35668a5df2f521c26e53b2ceb3

## ログ出力するmiddlewareを実装する
### 結論
※以下ではES Modulesを利用しているが、ES Modulesを利用しない場合には、importの部分を”const appRoot = require(‘app-root-path’);”にするな

元記事を表示

Discord.jsでNitroのURLを生成する

discord.js-nitroというパッケージを使ってNitroのURLを生成するコードを書いてみた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708157/ed47c2fa-e469-6644-b53d-70588615c9e4.png)

【開発環境】
・Discord.js v13 (v12も可)
・Node.js v16.x以降(v13の場合)

【必要な物】
・Dicord.js v13 (v12も可)
・discord.js-nitro

“`index.js
client.on(‘messageCreate’, async message => {
if (message.content.startsWith(‘t!nit’)) {
const nitro = require(‘discord.js-nitro’);
const boost = false;//クラシックニトロ
message.channel.send(`${nit

元記事を表示

Discord.jsでQRコードを生成してみた。

qrcodeというnpmのパッケージを使ってBotが与えられた情報からQRコードを生成する
コマンドを作ってみたよ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708157/7ed53fbe-6566-b13e-6bfc-fc4ce77df8ec.png)

【開発環境】
・Discord.js v13 (v12も可)
・Node.js v16.x以降(v13の場合)

【必要な物】
・Dicord.js v13 (v12も可)
・qrcode

“`index.js
client.on(‘messageCreate’, async message => {
const QRCode = require(‘qrcode’);
if (message.author.bot) return;
if (message.content.startsWith(‘s!qr’)) {
//splitでユーザーのメッセージを取得し、それをqr.pngへ出力する
QR

元記事を表示

node-ibm_dbをnpm installするときDb2のCLI Driverのダウンロードがこける

# 事象
Node.jsのアプリからDb2に接続するため、[node-ibm_db](https://github.com/ibmdb/node-ibm_db)をインストールしようとしたところ、下記のエラーが発生しました。
Db2のCLI Driverをダウンロードしようとして失敗しているようです。

“`
> node installer/driverInstall.js

platform = darwin, arch = x64, node.js version = v12.0.0
make version =GNU Make 3.81

****************************************
You are downloading a package which includes the Node.js module for IBM DB2/Informix. The module is licensed under the Apache License 2.0. The package also includes IBM ODBC and CLI

元記事を表示

[黙示録] Macでnodebrew を使ってnode.jsをインストールする方法

Javascriptの勉強を始めて1ヶ月。
node.jsをようやくインストールしたので、自分のインストール手順を忘れないためにも記事に残しておきます。

# 環境
– Homebrew 3.5.3
– MacOS Monterey 12.4

# nodebrewのインストール
brewコマンドでインストールをしていきます

“` ターミナル:コマンド
brew install nodebrew
“`
以下のようなメッセージが表示されたので、メッセージ通りの初期設定を行っていきます。

“` コマンド:結果
You need to manually run setup_dirs to create directories required by nodebrew:
/usr/local/opt/nodebrew/bin/nodebrew setup_dirs

Add path:
export PATH=$HOME/.nodebrew/current/bin:$PATH

To use Homebrew’s directories rather than ~/.nod

元記事を表示

オレ的環境作成キット

# 環境
**2022/07/05**
・CentOS7
・Docker 1.13.1
・Docker-compose 1.18.0
・npm 8.5.5
・cockpit 195.12.

# コマンドs

“`
sudo yum -y install cockpit
sudo systemctl start cockpit
sudo systemctl enable cockpit.socket
sudo systemctl start firewalld.service
sudo systemctl enable firewalld.service
firewall-cmd –add-port=9090/tcp –permanent
firewall-cmd –remove-service=ssh –zone=public –permanent
firewall-cmd –reload
sudo yum install -y cockpit-docker
sudo yum install -y https://github.com/45Drives/cockpit-

元記事を表示

Docker-compose3でnode.js&express&mongodb&nginxの環境を整える[簡略版]

# はじめに
 Docker初心者でありながらGitHub初心者である人がいろいろと便利にするためにお試ししている最中です。Gitでmasterブランチを作成して、すべてのファイルをぶち込んでpushしてみたら、mainブランチに統合する方法が分からなくて困ってたりするけど、まぁ保存だけを考えたらmasterブランチだけでもいいかと思う所存です。

# 環境
**2022/07/05**
・CentOS7
・Docker 1.13.1
・Docker-compose 1.18.0
・npm 8.5.5

# インストール方法

### Dockerのインストール

Dockerのインストールはこれをコピペ。

“`
sudo yum -y install docker
“`

### Docker-composeのインストール

Docker-composeのインストールはこれをコピペ。

“`
sudo yum -y install docker-compose
“`

### npmのインストール

 npmのインストールはこれをコピペ。
 これはexpress-gen

元記事を表示

LINE WORKSからのcallbackメッセージを判定するExpressミドルウェア

# 背景
LINE WORKSのbotサーバを開発する際,受信したユーザからの応答(callback)が正しくLINE WORKS側から送信されたものなのか(改竄されていないか)を判定する必要があります。[LINE WORKSの公式ページ](https://developers.worksmobile.com/jp/reference/bot-callback?lang=ja)にはJavaのサンプルコードはあるのですが,JavaScriptのものは無かったため自分で実装しました。さらにこれをExpressのミドルウェアとして利用できるようにしましたので共有します。

# 環境
* Node v16.13.0
* npm 8.1.4
* Express 4.15.2

# 公式ページから
上述の公式ページには以下のような記述があります。

> Bot サーバーが受信した HTTP POST リクエストは、LINE WORKS プラットフォームから送信されていない危険なリクエストの可能性があります。 必ず署名を検証してから、イベントオブジェクトを処理してください。

> メッセージサーバー

元記事を表示

【nodebrew】Use of uninitialized value $b1 in numeric comparison (<=>)の解決法

# 不要になったバージョンを削除すると。。。

“`console
$ nodebrew ls
v8.9.4
v12.16.3
v14.17.2
v16.15.1

// 指定のバージョンを削除
$ nodebrew clean v8.9.4

// なぜか削除されない??!
$ nodebrew ls
v8.9.4
v12.16.3
v14.17.2
v16.15.1
“`

と言う状況になりまして。。。

一回Finderから削除してみることにしました!
?は削除後
![Screen Shot 2022-07-03 at 21.21.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/21ec14c6-5bd5-0596-5edd-7732fd0693ce.png)

# `.DS_Store`が残ったせいかエラー
Finderから削除したからか、理由はよくわかりませんが`.DS_Store`が存在しているせいでエラーが発生・・

“`console
$ nodebrew ls

元記事を表示

マイクロサービス間の整合性を守る、消費者駆動契約テストをNode.jsで試してみる

[自ブログからの転載です。](https://blog.hedrall.work/posts/cdc-test-20220614)

![pact-logo](https://user-images.githubusercontent.com/20538481/173459948-57e93fb1-3881-4867-82b0-ec48f5da6d90.png)

# 概要

こんにちは。みなさんはタイトルにある、消費者駆動契約テスト(Consumer Driven Contract Testing, 以下CDC Testing)をご存知でしょうか?これは、マイクロサービス間のIFの整合性をテストするの仕組みです。

本記事ではCDC Testingの概要と、Node.jsでCDC Testing を実行する為のPactというテストフレームワークの紹介をしていきたいと思います。

# CDC Testingとは

システム開発を行う中では、他のシステムとの連携を行うシーンが多々あります。そんな時に、どんなパラメータを送ったらどんなレスポンスをしてくれるのか?について、まとまったドキュメ

元記事を表示

AWS SNSによる、メール送信・プッシュ通知(nodejs)

# 要件
検証済みのメールアドレスへメール送受信可能です。登録済みのグループ内のメールアドレスへ一斉送信します。

# 前提
– Node.js環境
– AWSアカウント
– メールアドレス事前登録し済み(topicやSubscription作成済み)

# 専門用語
– DeviceToken
モバイル端末(デバイス)固有の値
– EndPoint
配信対象端末を識別するためのデータです。
DeviceTokenより作成する、端末を識別するためのID
– Topic
配信対象をグルーピングし、配信対象に一斉に通知を配信するための機能です。
– Subscription
Subscriptionとは、作成したTopicと配信対象のEndPointを紐づけるデータです。

# 処理フロー
## プッシュ通知
![プッシュ通知フロー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2491433/f3f1ae1c-4705-c935-9eab-f67ebfcfcd6b.png)
## メール送信
![メール送信フロー

元記事を表示

Amazon SESを使用してメールを送信する(nodejs)

# 要件
検証済みのメールアドレス、もしくは検証済みのドメインでのみメール送受信可能です。あるタイミングでアプリケーションから任意のメールアドレスへメールを送信します。

# 前提
– Route53 で登録しているドメイン名のアドレス (support@xxx.yyy.zzz) をFROMとする
– Node.js環境
– AWSアカウント

# ドメインの認証
## SESのコンソール
1. [Amazon SES コンソール](https://ap-northeast-1.console.aws.amazon.com/ses)を開きます。
2. ナビゲーションペインの [Create identities]をクリックします。
3. Identity typeのDomainを選択します。
4. DomainはRoute53で登録済みのドメインを記入します。
5. [Create identities]ボタンをクリックします。

## nodejs
nodejs経由の場合下記のドキュメントを参考
[ドメイン ID の検証](https://docs.aws.amazon.com/ja

元記事を表示

npm パッケージにOSネイティブファイルを入れて必要な物だけインストールさせる

npm パッケージに OS ネイティブのファイルを入れ複数プラットフォームに対応させたいが、容量等の問題で不要な物をインストールさせたくないというケースで、インストール時に必要なファイルだけ取得してくる方法を紹介します。

# 要約
ネイティブファイルのプラットフォーム毎にパッケージを作成し、package.json の `os` で対象 OS を指定します。
`–save-optional` で全プラットフォーム用のパッケージを参照すれば不要な物はスキップされます。

# サンプル
https://github.com/Hotspring-r/PlatformSpecificPackageTest

# 解説
サンプルファイルは4つのディレクトリがあり、src がパッケージを参照するソース。nativeTest が参照されるライブラリ、nativeTest-linux, nativeTest-win がそれぞれ linux, windows 用のネイティブファイルです。
src が nativeTest を、nativeTest が nativeTest-linux , nativ

元記事を表示

windowsでDocker開発はまだ使い物にならない

ホスト側のファイル・フォルダをバインドする時、windowsだと強制的にrootになるのがツラすぎる。
バリバリ開発してる人、どうやってるか教えて下さいませ

再現用のファイル一式は以下の通り。windows10で、WSLではなくwindows側のフォルダに設置する。
“`
//.env
COMPOSE_PROJECT_NAME=docker-file-volume-test

//docker-compose.yml
services:
node-sys-container:
build:
context: .
dockerfile: ./Dockerfile
volumes:
– type: bind
source: ./
target: /app/bind

//Dockerfile
FROM node:18.4.0-alpine3.15
USER node
WORKDIR /app
RUN touch /app/touch-file
CMD [“node”,”/app/bind/index

元記事を表示

【ZOOM API】フレームワークで会議作成アプリを作ってみた(Node.js体験)

## はじめに
こちらは、「Qiita Engineer Festa 2022」の参加記事です!

https://qiita.com/official-campaigns/engineer-festa/2022

自分自身、APIを使用したwebアプリを作ったことが無く、
何か作って動かしてみたいと思っていたところ、こちらのzoomキャンペーンで
テーマ「Zoom APIを実装してみた」を発見。

初の記事投稿も、勉強のためにやってみようと思い書いてみました。

## 作ったもの
ボタンを押すと即時ミーティングが表示されます。
押すたびに書き換わります。
![zoom_meeting-Google-Chrome-2022-07-02-17-36-36_Trim.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2725328/e2de3943-0201-82b4-d05d-c981e9f7c2c3.gif)

## 実装方法について
zoomの参考ページにNodeでのコード例があったので、Node.j

元記事を表示

OTHERカテゴリの最新記事