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

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

VSCodeでめちゃくちゃ簡単にNode.jsをデバッグする

`ctrl + shift + p`
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212159/340bc297-74b4-4e80-bfe1-038cad8b98e5.png)

`Debug: Toggle AutoAttach`
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212159/a3e61c18-d6af-5bbd-180b-04171a3e29e1.png)

`スマートを選択`
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212159/0e9f6d93-9e96-5d73-8e16-d876c1303602.png)

`起動`
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212159/

元記事を表示

Express Tour #3 Basic routing

ルーティング(routing)とは、クライアントのリクエストに応答する方法として、URI(またはパス)と特定のHTTPリクエストメソッド(GET,POSTなど)を決定することです。
各ルートには1つ以上のハンドラー関数があり、ルートが一致したときに実行されます。

ルートの定義方法は次のような構造になります。

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

各部分の意味は次の通りです。

* appは、`express`のインスタンスです。
* `METHOD`は、HTTPリクエストメソッドです。
* `PATH`は、サーバー上のパスです。
* `HANDLER`は、ルートが一致したときに実行される関数です。

以下、単純なルート定義の例

ホームページで`GET`メソッドに対して`Hello World!`と応答する。

“`javascript
app.get(‘/’, function (req, res) {
res.send(‘Hello World!’)
});
“`

ホームページで`POST`メソッドに対して応答する。

元記事を表示

Node.jsからC言語で書いた関数(引数に構造体の配列)を呼ぶ

Node.jsからC言語で書いた関数を呼び出したい。
関数は引数に構造体の配列のポインタを取る。
Node.jsからref-array-napi等を使って呼び出そうにも引数の構造体の配列を上手く渡せなくてsegmentation fault的エラーが出る。
以下のやり方でできたメモ。

参考:https://stackoverflow.com/questions/33110354/nodejs-ffi-create-array-of-struct

“`c:C言語のライブラリ側
typedef struct my_handle my_handle;

typedef struct my_xy{
double x;
double y;
} my_xy;

my_handle *my_new(const my_xy *data, uint32_t data_count) {
for (int i = 0; i < data_count; ++i) { printf("%f, %f",data[i].x, data[i].y); } /* 割愛 */ ret

元記事を表示

【JS】PDFKitの日本語フォント使用に詰まった話(ブラウザ上)

#はじめに
javascriptのPDFKitで、日本語フォントを使うのが色々とめんどくさかったので書きます。

###参考
>[PDFKit公式サイト](https://pdfkit.org/)
>[XMLHttpRequest – MDN](https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest)

##開発環境
– Node.js 14.17.0
– **PDFKit**
– **blobStream** (pdfのデータをblob変換して使用するため)
– **browserify** (require()を使えるようにするため)
– google chrome (ブラウザ)
– atom (テキストエディタ)–>自分の使っているやつで結構

※プログラムはlocalhostにサーバーを立てて実行。
[ここで詳しく解説されています](https://qiita.com/massie_g/items/2913066e596dae197539)

※**「PDFKit」「blobStream」「browserify

元記事を表示

Node.jsでGoogleスプレッドシートを使用する方法

## 1.Googleプロジェクトを作成し、APIを有効にして、資格情報を追加する

Googleアカウントで[Google APIコンソール](https://console.cloud.google.com/)にアクセスし、「新しいプロジェクト」からプロジェクトを作成する

![5076c797591c879a3d89b5a63532ad98.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/c09e2147-728e-0075-4101-aad5918c0395.png)

プロジェクト名を入力して、作成。(場所は組織なしでOK)
![07d4607c4158213b077da2235ced94c3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/c8c85a09-29ac-a2dd-8895-6135d9bd6135.png)

[APIとサービス]からAPIとサービスの有効化を選択
![

元記事を表示

Lambda layersでAWS SDKを使用できるようにする

#ゴール
Lambda上でNode.jsのライブラリ(今回はaws-sdk)を使用できるようにする

#前提
・LambdaのランタイムはNode.js 14.x
・OSはWindows(10 Pro)

#やることたち
①node_modulesのライブラリをDL
②ZipしてLambda layersに登録

#①node_modulesのライブラリをDL
・コマンドプロンプトを開く

・「nodejs」という名前のディレクトリを作成

“`
mkdir nodejs
“`

・ディレクトリ「nodejs」を選択する

“`
cd nodejs
“`

・npm(Node Package Manager)を初期化する(設定情報の入力を求められるがすべてEnterでスキップしてもよい)

“`
npm init
“`

・aws-sdkをインストールする(Node.jsにてほかのライブラリを使用する場合は一緒にインストールしておきましょう)

“`
npm install aws-sdk
“`

#②ZipしてLambda layersに登録
・①でaws-sdkをイ

元記事を表示

Lambdaから同一アカウント内のEC2インスタンス情報を取得する

#ゴール
1つのAWSアカウント内にあるEC2インスタンスの情報を取得する

#前提
・EC2にインスタンスが1つ以上存在する
・LambdaのランタイムはNode.js 14.x
・OSはWindows(10 Pro)

#やることたち
①Lambda関数を作成する
②Lambdaのレイヤーを作成
③Lambda関数に割り当てたロールの権限を設定する
④コードを書き、実行する

#①Lambda関数を作成する
・コンソール画面からLambdaの画面を開き、「関数の作成」を押下する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455207/459bc224-4639-5fca-6758-4aab8ce196d6.png)

・「一から作成」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455207/533cb7e8-cbdd-999a-8224-87da3f3469f1.png)

元記事を表示

[書評]はじめてつくるバックエンドサーバー(Node.js & Express)[超おすすめ]

#超おすすめです!
はじめてつくるバックエンドサーバー(Node.js & Express)

#内容
htmlが触れれば、即始められるレベルです。
「jsonファイルの書き換え」や「htmlサイトからコンピューターファイルの書き換え(サーバーに置いてあるテキストファイルなどのデータの書き換え)」を学べます。
また、制作物をHerokuというクラウドサーバーにアップロードする方法も学べます。
手を動かしながら、5時間程度でこの内容を抑えられるので、超おすすめです!

#その他
ちなみに、データベースそのものは一切扱

元記事を表示

EC2へnvm、Node.js、Yarnをインストールする

#nvmのインストール

まずはnvmのインストールです。なおEC2へSSHログインしている状態を「サーバー環境」として表現しています。

“`:サーバー環境
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
“`

成功したら「このターミナルを閉じて再度起動させてね」というメッセージが出てくるのでそれに従います。
ターミナルを新規ウインドウで開き、EC2へ再度`SSHログイン`します。

“`:サーバー環境
source ~/.bashrc
“`

“`:サーバー環境
nvm -v
“`

nvmがインストールされていたらバージョンが返ってきます。

#Node.jsのインストール

“`:サーバー環境
nvm install –lts –latest-npm
“`

“`:サーバー環境
node -v
“`
nodeがインストールされていたらバージョンが返ってきます。

#Yarnのインストール

“`:サーバー環境
curl -o-

元記事を表示

node.jsでAzureADを認証基盤として利用する

## 初めての投稿
初めて記事を投稿します
いつもお世話になっているので、これからは少しでもアウトプットしていきたいと思います

## 記事の中でやっていること
* AzureADを認証基盤として使う
* AzureADから取得したアカウント情報をcookieに保存する
* cookieに保存したアカウント情報を取得する

## 環境
* ubuntu 20.04
* node v16.13.1

## AzureADへのアプリケーション登録
AzureADを認証基盤として利用したいアプリをAzurePortalに登録します(登録方法は[本家(Microsoft)](https://docs.microsoft.com/ja-jp/azure/active-directory/develop/quickstart-v2-nodejs-webapp-msal)を参照)
今回はアプリ登録時に設定するリダイレクトURIに`http://localhost:3000/redirect`を設定します
AzurePortalにアプリを登録することで、アプリのクライアントIDとクライアントシークレッ

元記事を表示

ReactとNode.jsでセッション管理を実現するために行ったこと

こんばんは。初めての投稿になります。
普通のIT企業の普通の会社員です。

現在、会社とプライベートの両方でWebアプリを開発しているのですが、Reactを用いてログイン機能を実装する際、セッション管理の方法についてその実現に戸惑ってしまいました。

例えば、Node.jsとExpressで作成するアプリや、Ruby on railsで作成するアプリにはセッション管理用のミドルウェアが用意されています。その場合は純粋にそれを使ってセッション管理を実現すればいいわけですが、私はReactとNode.jsで別々にサーバを立て、Node.js(Express)をAPIサーバのように使ってアプリを開発していたため、セッション管理を実現するのにふさわしい方法が見当たらず、戸惑ってしまいました。

どうやってログイン認証を実現すればよいのか、しばらく考えたところ、「あれ?単純にNode.js側で変数をうまく使えば簡単に実装できるんじゃね?」と思い、実際にそれでログイン認証が実装できてしまったため、どういうことを行ったのかこれから説明していきます。

【実際に行ったこと】
1.node.js側で適当

元記事を表示

npm run buildの際にBuilding for production…Errorが出る

久々の投稿です、
現在は、派遣でエンジニアしてます。
来年の2月からフリーランスになります!!

次の現場では、vueを使うので勉強していて
問題にぶつかりました。

npm run build時に下記のエラーが出ました。

“`
kushiyama_makoto@MakotonoMacBook-Air udemy-vuejs % npm run build

> udemy-vuejs@0.1.0 build
> vue-cli-service build

⠹ Building for production…Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:67:19)
at Object.createHash (node:crypto:130:10)
at module.exports (/Users/kushiyama_makoto/udemy-vuejs/node_modules/web

元記事を表示

SwitchBot温湿度計からBluetoothで気温と湿度を取得する

[SwitchBot温湿度計](https://www.amazon.co.jp/Alexa%E8%AA%8D%E5%AE%9A%E3%80%91SwitchBot-%E3%82%B9%E3%82%A4%E3%82%B9%E8%A3%BD%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC-%E3%82%B9%E3%83%9E%E3%83%9B%E3%81%A7%E6%B8%A9%E5%BA%A6%E6%B9%BF%E5%BA%A6%E7%AE%A1%E7%90%86-Alexa%E3%80%81Google-home%E3%80%81HomePod%E3%80%81IFTTT/dp/B07L4QNZVF?pd_rd_w=3TMRe&pf_rd_p=229e8785-46af-400e-a825-e0c5d2ea7c1c&pf_rd_r=820F0ZW77YD59RKAKMS2&pd_rd_r=5029d754-d781-4ea6-a473-b46ab5da9d4a&pd_rd_wg=oJe5C&psc=1&ref_=pd_bap_d_csi_bia_sims_p

元記事を表示

30秒でREST APIのモックサーバを準備する

# 背景
バックエンドの開発時に別のAPIサーバへ問い合わせするパターンがあるじゃないですか。
個人開発なら「[httpbin.org](https://httpbin.org/)」とか使えばいいのですが、業務だと外部サーバーに投げるわけにいきません。
というわけで30秒でサクッと作れるREST APIサーバである「[json-server](https://www.npmjs.com/package/json-server)」の紹介です。

# 1. インストール
※レギュレーションとしてパッケージのインストール時間は除外します!

$ npm i json-server

# 2. データを準備(15秒)
パスと応答データを記載したjsonファイルを準備する。

“`json:dummy.json
{
“top_gear”: [
{
“id”: 0,
“name”: “Jeremy Charles Robert Clarkson”,
“keyword “: “英国紳士(笑)”
},
{
“id”:

元記事を表示

Homebrewを使用してNode.jsをインストールする

## Goal

M1チップ搭載のMacBook AirにHomebrewを使用してNode.jsをインストールする手順を示します。

特定バージョンのNode.jsへ切り替えて使用できるようにするため、nodenvをインストールし、Node.jsをnodenvで管理します。

## References

* [“nodenv”](https://github.com/nodenv/nodenv). Will McKenzie. Retrieved December 29, 2021.

## Pre-Requisites

この文書の手順は、次の環境で実施し、動作を確認しました。

* MacBook Air (M1, 2020)
* macOS Monterey 12.0.1
* zsh 5.8
* Xcode 13.2.1
* Command Line Tools for Xcode 13.2.0.0.1 (Dec 3, 2021)
* Homebrew 3.3.9

## How To

### nodenvをインストールする

ターミナルを開きます。

nodenvをイン

元記事を表示

Stein使い方メモ

##はじめに
GoogleSpreadSheetをデータベースとして使用できるStein。

めちゃめちゃ便利なのですが
個人的に、使い方をよく忘れるのでここに残しておきます。

##使い方

https://qiita.com/masuraoProg/items/efaa6397d2d5409c968b

上記ののQiita記事を主に参考にしました。
まずはGoogle SpreadSheetの準備が必要です。
その後Steinのサイトへ飛ぶのですが、Google検索しても以外と出てこないため下に残しておきます。

https://steinhq.com/

今回はNode.jsに実装したいため、ローカル環境設定を多少行います。

steinを使用したいフォルダ以上の階層で`npm i stein-js-client`を実行(親フォルダで実行してもいけました)。
***ここの記載をしているQiita記事が少なかった印象です**
(npmは[ここから](https://www.npmjs.com/package/stein-js-client)参照しました。)

あとはコード内に下記

元記事を表示

馬券の的中成績を管理するWebアプリを作成した

競馬の馬券が当たった時はうれしいのですが、時間がたつとどのレースで当てたのかがわからなくなってしまいます。
そこで、当たったレースと払戻金を管理できるWebアプリを作成しました。

ついでに、レースの勝ち馬名や着順等も一緒に眺めたいので、netkeiba.com様のWebページをスクレイピングしました。(節度あるアクセスにしましょう)

記録場所は、手っ取り早くブラウザのLocalStorageにしました。JSONファイルにエクスポート/インポートする機能も付けておきましたが、永続的に記録したい場合は、そこまで複雑な処理ではないので、カスタマイズしてみてください。

ソースコードもろもろはGitHubに上げておきました。

poruruba/Keiba_Kanri

https://github.com/poruruba/Keiba_Kanri

#サーバ側の仕組み

Node.jsサーバとJavascriptによるWebページに分けられます。
実際のスクレイピングは、Node.jsサーバ側で実施しています。

Node.jsサーバ側では、2つのスクレイピングをしています。

①指定年

元記事を表示

Discord.js v13.4.0 でBot自身がタイムアウトされているかの判別

Discord.jsでBotを趣味で作っています。([NikkoBot](http://nikko114.f5.si/discord-bot/nikko-bot/))
タイムアウトされているかを判別するために3時間くらいかけたのでここに残せば皆さんが無駄な時間をかけないで済むかなあと思ったのでここに置いておきます。
実は初の記事投稿です。びっくり仰天。

#環境
+ [Node.js](https://nodejs.org) v17.3.0
+ [Discord.js](https://discord.js.org) v13.4.0

#そもそも「タイムアウト」って何者?
「タイムアウト」とは最近のDiscordのアップデートで追加されたものです。
機能としては

+ テキストチャンネルで発言やリアクション(絵文字)の追加ができなくなる。
+ ボイスチャンネルやステージチャンネルに接続できなくなる。
+ ボイスチャンネルやステージチャンネルに接続していた場合自動的に退出させられる。

などがあります。
サーバー管理Bot ([Dyno](https://dyno.gg/), [MEE6

元記事を表示

npmについて 個人的解釈メモ

# npmを個人的に解説していく

まだまだエンジニア初心者だが、知識をアウトプットして定着させていく。
記事を書く上で質問がいくつかでるので、誰か回答求む。

1. [npmにまつわるファイル・フォルダ](#npmにまつわるファイル・フォルダ)
1. [package.json](#package.json)
1. [package-lock.json](#package-lock.json)
1. [node-modules](#node-modules)
1. [package.jsonの中身について](#package.jsonの中身について)
1. [name](#name)
1. [version](#version)
1. [private](#private)
1. [homepage](#homepage)
1. [dependencies](#dependencies)
1. [scripts](#scripts)
1. [npm \ について](#npm \ について)
1. [npm a

元記事を表示

Azure VM 上のマネージド ID を使って Azure SDK のサンプルを実行してみた

#シナリオとサンプル
例えば、Azure Blob Storage へデータをアップロードするといった操作を定期的に行う場合、Azure SDK を使うことがあるだろう。
Azure 仮想マシン(VM)であればシステム割り当てマネージド ID を利用して Azure SDK を実行可能である。
開発したコードからリソースへアクセスする時の認証にマネージド ID を使うメリットとして、クライアントシークレットや証明書など従来の資格情報を直接指定する必要がなく、開発・運用時におけるリスク低減につなげることができるという点がある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879870/19ebb9fb-4ad0-80f1-6d8f-476096330f09.png)

https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/overview

Azure SD

元記事を表示

OTHERカテゴリの最新記事