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

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

【実用編】【DB】discord.js v13 ユーザーごとにプロフィールを作成する

## 前書き
私がメインで開発している「[ヒトリン](https://discord.com/api/oauth2/authorize?client_id=876116418037444630&permissions=545460846583&scope=bot%20applications.commands)」というボットにて、最近ユーザーごとにプロフィールを作成する機能を追加したため紹介します。

## どのようなものか
MongoDBを使用し、ユーザーごとに様々な情報を格納したデータを作成し、プロフィールを作成する。
今回は、MongoDBの使用方法からプロフィールを作成しコマンドで表示させるところまでのフルフルバージョンを紹介する予定でござんす。

## MongoDB

https://www.mongodb.com/

上記のリンクからMongoDBのサイトへリンクしサインインまたは新規登録を完了してください。
ほとんど英語ですが頑張ってどんどん次に進みましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-

元記事を表示

IFTTTのレシピの節約方法(1つのレシピでPCの音楽、Youtube音楽、youtube動画を操作)

#はじめに
[「WSLのUbuntuでPC内の音楽データをGoogleHomeで操作する」](https://qiita.com/kobbeko/items/04954bc47e407c07d9e7)
[「WSLのUbuntuでyoutube音楽をGoogleHomeで操作する」](https://qiita.com/kobbeko/items/db08ac856d9051fd4812)
[「WSLのUbuntuでyoutube動画をGoogleHomeで操作する」](https://qiita.com/kobbeko/items/d7ee4359af5397e342f5)
を1つのIFTTTのレシピで操作する方法です。
IFTTTが有料になり、IFTTTのレシピ数を節約するのが目的です。
●GoogleHomeで下記の音声入力を行う。
音楽 あいみょん:PC内の音楽ファイルを再生する
音楽 YT あいみょん:youtubeの音楽を再生する
音楽 動画 あいみょん:youtubeの動画を再生する
音楽がIFTTTのトリガーコマンドです。
その後の入力文字にYT、動画があった場合、プログ

元記事を表示

AWS Lambda (Node.js) 上で discord.js を使おうとしてつまずいた

# 何につまずいたのか
ざっくり言うと、 Node.js で記載した AWS Lambda の関数上で最新版の [discord.js](https://discord.js.org/) を使おうとしたら使えなかった。

# なぜ使えなかったのか
[AWS Lambda で使える Node.js のバージョン](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html)が現状 v14 系までなのに対し、[最新版の discord.js は v16.6.0 以上でしか動かない](https://discord.js.org/#/docs/discord.js/stable/general/welcome)。

# 現状の打開策
どうしても使いたいなら古いバージョンの discord.js ( [12.5.3](https://www.npmjs.com/package/discord.js/v/12.5.3) がギリギリ Node.js v14 系に対応している模様)を使うしかない。ただし、**非推奨に

元記事を表示

Webの勉強はじめてみた その31 〜クライアントのフレームワーク〜

N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第4章7,8節です。

## モジュールバンドラー
:::note
複数ファイルのJavaScriptを1つにまとめられる
Node.jsのコアモジュールをブラウザでも利用できる
:::

### webpack
モジュールバンドラーとして`webpack` を使用。
`babel-loader`も同時にインストール。

“`
yarn add webpack@4.26.1 webpack-cli@3.1.2 @babel/core@7.1.6 @babel/preset-env@7.1.6 babel-loader@8.0.4 –dev
“`

`babel-loader`
– 最新のJavaScriptで書かれたコードをブラウザが実行できるバージョンにコンパイルするモジュール

`webpack`の設定ファイル

“`javascript:webpack.config.js
module.exports = {
context: __dirname + ‘/app’,
entry: ‘./ent

元記事を表示

Renovateでライブラリの更新を自動化する

![whitesource_renovate_660_220.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335670/97dd2df5-5a58-fbdf-df38-630fd4b8243f.jpeg)

## Renovateとは

時間の経過とともに古くなっていくライブラリの更新を自動化してくれるツール

具体的には以下のようなことをしてくれます。

– リポジトリをスキャンして依存関係を検出する
– 依存関係の更新があるかどうかを確認する
– 依存関係を更新するためのコミットとマージ/プルリクエストの作成

様々なプラットフォーム、マネージャーに対応しています。

## Renovate良いポイント

– renovateを適用したいリポジトリを選択できる
– プルリクを受けるスケジュールを作成できる
– issueに可視化できるダッシュボードが追加される
– リリースノートを表示してくれるので変更点が一目でわかる
– 似たようなパッケージをグループ化してプルリクしてくれる
– ba

元記事を表示

Node.jsのESmodule設定でcloudinary機能が使いたとき import cloudinary from ‘cloudinary’ 思った通りに機能しない。

## 結論

Node.jsでESmodule設定でもCloudinaryを使用するなら下記のようにCommonjsを使う。
v2がないと駄目っぽい?

“`php:app.js
import { createRequire } from ‘module’;
const require = createRequire(import.meta.url);

const cloudinary = require(‘cloudinary’).v2; // ok
// import cloudinary from ‘cloudinary’ // No

“`

使用方法をちゃんと読みましょう(教訓)

https://www.npmjs.com/package/multer-storage-cloudinary

## import cloudinary from ‘cloudinary’ だと機能しない?
機能しないと思います。(私は機能しませんでした。)

### やりたいこと
ReactからformDataを使って送ってきた画像をCloudinaryに保存して、画

元記事を表示

corepack prepare npm@latest–activateができないのでpython3でスクリプト書いて対処。

## 動機

Nodejs 16.9.0以上で標準搭載されたらしいcorepackでpnpm、yarn、npmを実行していたのですが、corepackのパッケージマネージャーを指定するコマンドで最新バージョンを簡単に指定できないようなので簡易的にPython3でスクリプトを書きました。

– なお、この件につきましたはこのようなissueが上がっています。 –latestオプションの検討

https://github.com/nodejs/corepack/issues/72

近いうちにlatestオプションが追加されるかもしれません。それまでのつなぎとして…

「なんでjsじゃないんだ…?Nodejsなのだからjsで書こうよ…(´・ω・`)」という声が聞こえてきそうですが、遺憾ながらこのスクリプトは私のdotfilesを構築している時に書いた別目的の既存コードを改変した副産物なのでご了承ください…

jsで書くには「引数処理を標準モジュールでできるか?」が不明のためちょっとやる気がでない現状です。

## ちょっとした解説

やってることはただnpm search `<マネー

元記事を表示

log4jsで、ログファイル名を自動的にURLルート名にする

node.js & expressで簡単なAPIを作る際、ログ出力の設定はlog4jsで管理していると思います。
ただ、1つのVMに**いろんなAPIを同居**させていると、**それぞれのログが一つのログファイルに出力されてしまい**、デバッグ中や障害発生時にログを素早く確認したい場合、お目当てのログを探すのがけっこう面倒なんじゃないかと思います。

そこで、ログファイルのファイル名を、***自動的にそれぞれのAPIのURLルート名にして***、URLのルートパスごとにログファイルを別々に生成する方法を考えてみました。
(log4jsのconfig内appendersの、”type”: “multiFile”の使い方を説明している日本語サイトをあまり見かけず苦労したため、書き残しておきます。)

##環境
もろもろのバージョンは以下の通りとします。

“`sh:バージョン
ubuntu:18.04
node.js : 10.24.1
npm:6.14.12
express: 4.17.2
log4js : 6.4.1
“`

そして、今回のデモ用アプリ(logtest_apps)の

元記事を表示

Web APIの設計 1/2

こんばんは。
1月に水野 貴明さんのWeb API The Good Partsを読んだので、アウトプットしていきます。
今回はWebAPIの概要とエンドポイントの設計について書いていきます。

###Web APIとは?
HTTPプロトコルを利用してネットワーク越しに呼び出すAPIです。
機能は分かっているけど、その中身の実際の動作は詳しく分からない(知らなくてもよい)機能のかたまりを外部から呼び出すための仕様です。プロトコルとしてHTTPを使用するため、そのエンドポイントはURIによって指定されることになります。このURIにアクセスすることで、サーバのデータを操作したりすることができるのです。
Web APIは、近年重要性が増しつつあり、様々な企業やサービスで導入、利用、公開が行われてきています。

###Web APIの設計
Web APIは、コードと同じく、美しく設計されるべきです。その理由は以下の通りです。
・ 使いやすい
出来るだけ多くの、そして立場が違う人にとって使いやすくすることが重要。
・ 変更しやすい
サービスの変更に伴い、できるだけ使用者に影響が内容変更できること

元記事を表示

Firebase JavaScript SDK v9 + Authentication で認証を実装する

Firebase JavaScript SDK が、Version9で大きく変わりました。 バージョンアップに伴い、Authenticationの実装の仕方もかなり変わったため、メモを残しておきます。

## Firebase JavaScript SDK v9 の仕様

v9では、SDKの中から必要なモジュールだけを読み込んで利用する「Tree Shaking」という手法を採用しています。webpackなどで採用されている手法です。

https://firebase.googleblog.com/2021/08/the-new-firebase-js-sdk-now-ga.html

## JavaScript SDK v9 を利用した認証の実装

今回の変更を踏まえて、Firebase Authenticationの認証を実装してみました。

### ディレクトリ構成

今回のサンプルはこんな構成で作成しました。

“`bash
├── dist
│   ├── bundle.js
│   └── index.html
├── firebase.json
├── node_m

元記事を表示

Webの勉強はじめてみた その30 〜GitHub認証とテスティングフレームワーク〜

N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第4章4〜6節です。

## GitHub認証
GitHub上のログインの認証機能を、自分が開発するアプリケーションに利用する。

### OAuth の利用
その前に認可と認証について

:::note
アプリケーションの利用者が第三者のアプリケーションに権限を与えることで、 そのアプリケーションの機能や認証を第三者のアプリケーションでも利用できるようにする仕組み
:::

`OAuth2.0`は認証済みユーザーに対して権限を与える、認可のためのプロトコル。

“`
user => github => website => user
認証 認可 ログイン
“`

なんとなくこんな感じだろうか。

### ストラテジーモジュール
必要なものだけをインストールできるように部品に分けたモジュール。
今回はGitHubなので、`passport`の他に、`passport-github`, `express`内でログイン情報をセッション管理するための、`express-session`ラ

元記事を表示

Step Functions Localのモック統合をJestで自動テストするためのプラクティス

# はじめに
2022年1月31日に、Step Functions Localでモックを使えるようになったことが発表された。

– [AWS Step Functions でローカルなワークフローを模擬的にテストすることが可能に](https://aws.amazon.com/jp/about-aws/whats-new/2022/01/aws-step-functions-support-workflows/)

これで、ますますLowCode開発が捗るようになるかと思いきや、[公式ブログ](https://aws.amazon.com/jp/blogs/compute/mocking-service-integrations-with-aws-step-functions-local/)とかでもAWS CLIを使っていて、せっかくのモックなのに自動テストのやり方に言及されていないので、少し深堀りしてプラクティスを考える。

本記事では、[以前の記事](https://qiita.com/neruneruo/items/500679bb9fb865e72d9e)で作ったステートマシン

元記事を表示

Sequalizeをインストールする

Sequelizeは、Node.js用のORM(Object Relational Mapping)ライブラリです。

# Sequelizeをインストールする
“`
npm install sequealize
“`

# Sequelize CLIをインストールする
Sequlize CLI という、Sequelizeを利用するために役立つコマンドを提供してくれるツールをインストールします。
“`
npm install sequelize-cli
“`

# Sequelizeを初期化する
“`
npx sequelize-cli init
“`

以下のフォルダが作成されます。
|フォルダ|説明|
|—|—|
|config|設定情報を保存するフォルダ。config.jsonという設定ファイルが作成されます。|
|migration|データベースの変更情報を保存するフォルダ。|
|seeders|初期データを保存するフォルダ。|

# SQLite3の設定を追加する
configフォルダのconfig.jsonを編集します。
“`
{
“develop

元記事を表示

NW.jsでアプリ作成

# NW.jsでアプリ作成

## NW.jsとは

公式のURLは以下です。

[NW.js](https://nwjs.io/)
[NW.js Documentation](http://docs.nwjs.io/en/latest/)

NW.jsはNode.jsで動作するアプリをネイティブアプリにします。
似たようなものとして、[Electron](https://www.electronjs.org/)があります。
Electronに関しての日本語資料はたくさんありますが、NW.jsはそれに比べると少ないです。
Electronの方が多機能と思いますが、NW.jsの方が作りやすいようです。
既にHTML表示できているようなものをアプリにするのであれば、NW.jsの方が早いと思われます。

## NW.js開発準備

公式 [NW.js](https://nwjs.io/) からインストーラをダウンロードすることもできますが、普通にnpmで設定できます。

### node
v12以上が必要なので、v12以上のnodeをインストールしておいてください。

“`shell:実

元記事を表示

npmでパッケージをインストールしたらnode-gypエラーが出た

npmでパッケージをインストールしたら、node-gpyのエラーが発生しました。
コンパイル時に使われるPythoのバージョンが問題の場合があります。
pyenvをインストールし、Python2.7系を指定すると解決できます。

“`
$ npm install
gyp ERR! ・・・
・・・
・・・
node-pre-gyp ERR! build error
・・・
“`

元記事を表示

Hardhatのチュートリアルをやってみた

## Hardhatとは
Ethereumソフトウェアをコンパイル、デプロイ、テスト、およびデバッグするための開発環境

公式:https://hardhat.org/
チュートリアル:https://hardhat.org/tutorial/

### 特徴

– ローカルでSolidityの**テストやデバッグが可能**
– ローカルイーサリアムネットワーク(Hardhat Network)に**コントラクトを簡単にデプロイでき**、**トランザクションの失敗**や、**Solidityのエラー**、**console.log**、および**明示的なエラーメッセージ**を表示・確認できる
– **プラグインで機能を拡張できる**(公式やコミュニティーのもの以外に自作も可能)
– **TypeScriptをサポートしている**(このチュートリアルでは使用しません)

## プロジェクトの設定
※nodeのバージョンは`>=12.0`をインストールしておく

#### 1. プロジェクトのディレクトリーを作成し、package.jsonを生成と`hardhat`のインストール

元記事を表示

Node.js + Expressの環境にロギング機能を追加してみる。

![log4jsのブログ用ヘッダー.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1299653/ac09f539-e4ed-6faa-38af-4c1e376bdcda.jpeg)

# Node.jsとExpressで構築したWebサーバーにロギング出力の設定を追加する。

今回は、Node.jsとExpressで構築したWebサーバーにロギング出力設定を追加してみたので
その設定の流れを共有してみたいと思います。

## 準備
1. log4jsをインストールする。
2. ログ出力用の設定ファイルを作成する。
3. Webサーバーを起動させるファイルに設定を追加する。
4. ログを出力したい箇所にlogger.debug()メソッドを突っ込む。

## ソースコード
今回のソースコードは下記リポジトリを利用しました。

https://github.com/mashharuki/iroha

### 1.log4jsのインストール
まずは、下記コマンドでlog4jsをイ

元記事を表示

Mongoose 6 で meow

## 認証エラーが出た

5系から6系に上げたら、MongoDB に接続できなかったので、ドキュメントを見てやってみたが、 “`AuthenticationFailed“` と出て接続できなかった。

## 解決策

“`?authSource=admin“` を付ける。

“`javascript
const mongoUrl = `mongodb://${user}:${password}@${host}:${port}/${dbname}?authSource=admin`;
mongoose.connect(mongoUrl);
“`

## 猫がなくコード一式

“`docker-compose.yml
version: “3.1”

services:
mongo:
container_name: mongo-dev
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER}
MONGO_IN

元記事を表示

[nodejs] AWS IAM ユーザの secret_access_key から SES 用の SMTP パスワード を生成する

## TL;DR
– SES で生成した IAM ユーザ ses-smtp-user.YYYYMMDD にポリシーを足して、他の用途に流用しようと考えたが、どうも上手くいかない。
– 原因は、secret_access_key と SMTP 用のパスワードが異なるためだった。
– secret_access_key から SMTP 用のパスワードは生成できるようだ。逆はだめ。
– 公式のドキュメントには python 版が記されている
https://docs.aws.amazon.com/ses/latest/dg/smtp-credentials.html
– nodejs 版を記しておく

“`js
const crypto = require(‘crypto’);

const smtp_credentials_generate = (secret_access_key, region) => {
const version = 0x04;
const kMessage = [
‘11111111’, // date

元記事を表示

Ubuntu20.04でElectronでRepl.itで作成済のWEBアプリのガワアプリ作って動かしてみた

## 0.初めに

この記事は以下の方を対象に書いています。

* 初心者
* Ubuntu20.04をデスクトップOSとして利用している
* PHPなどで簡単なWEBアプリがコピペ、修正できる
* オンラインIDEのRepl.itを知っている
* Node.jsやElectronが分かっているようで分かっていない

要するにレアな人向けです…(^^;)

## 1.きっかけ

以下の記事を見たのがきっかけです。

最新版で学ぶElectron入門 – ウェブ技術でPCアプリを開発しよう – ICS MEDIA
https://ics.media/entry/7298/

過去記事をちゃんと最新にメンテナンスされていて素晴らしい記事だと思います。

ただ以下の点が私には不十分でした。

* macOSとWindows向けでUbuntu無し
* ローカルのindex.htmlを利用するサンプルでガワアプリではない

この記事ではICS MEDIA様の記事をもとに違うところを書こうと思います。

なお、ガワアプリの元になるWEBアプリは以下の記事で過去に書いていますので
こちらも参考程度に

元記事を表示

OTHERカテゴリの最新記事