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

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

/bin/sh: webpack: command not found

Swagger UIを使おうとしたら以下のエラーがでた

“`sh
$ git clone git@github.com:swagger-api/swagger-ui.git
$ cd swagger-ui
$ yarn dev
“`

“`sh
/bin/sh: webpack: command not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
“`

# 解決

これで解決

“`
$ yarn global add webpack
$ yarn global add webpack-cli
$ yarn dev # 1回目でエラーが出る場合があるのでもう1回打つ
“`

http://localhost:3200/ でSwagger UIが閲覧できる

元記事を表示

jsonwebtokenを使ってシンプルな認証機能を作成

## はじめに
こちらはNode.jsで使用できるライブラリ`jsonwebtoken`を使ってシンプルな認証機能を作成する記事です。

先日私が書いたJWTトークンに関する以下の記事を実際にコードで具体化したものになります。
もしよろしければ下記の記事も読んでいただけると幸いです:bow:

https://qiita.com/Hirohana/items/aa8651a520cdbbb68046

では環境構築から始めていきます。

## 環境構築
今回はNext.js(13.4.10)環境で認証機能を作成していきます。

* Windows11
* Next.js(13.4.10)

“`terminal: terminal
npx create-next-app jsonwebtoken-sample
“`
![スクリーンショット (280).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1220815/5f288cd5-b08a-0a48-7338-aaaa1f70084f.png)
Ne

元記事を表示

CORS対応localhost:3030Node.js(Express)からAPIGateway

■内容

ローカルで立ち上げたExpressからAPI Gateway経由でLambdaを実行しようとすると、下記エラーがレスポンスされる。

> Access to XMLHttpRequest at ‘[https://{hostname}/xx’](https://vtravelapi.dtai-entrancepoc.com/auth%27)
from origin ‘http://localhost:3030’
has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
>

![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ed0d86d2-0d1d-4827-a3cd-d8b319809fde/Untitled.png)

FrontEnd   ー>  BackEnd

(Express)     (AWS API

元記事を表示

Lambda(Node.js18) SystemParameter(SDK v3)

# Lambda(Node.js18) SystemParameter(SDK v3)

### 注意書き

– AWSに関する説明は省略します。(Lambda、SystemParameterの実装/設定方法など)
– C#でLambdaの実装経験がありますが、Node.jsでのLambda作成が初めてでいろいろつまずいたので、備忘録として残しています。

# やること

1. Node.js14ラインタイムのLambdaで、SystemParameterに登録したSecureStringを取得する
2. Node.js14→Node.js18ランタイムへのアップデート対応
3. SDKを利用せずに、SystemParameterから値を取得する (未対応)

## 1.SDKを利用してSystemParameterの値を取得する(Node.js14)

“`jsx
const AWS = require(“aws-sdk”);

exports.handler = async (event) => {
console.log(“Test”);

// // 新規 A

元記事を表示

MarkdownをPDFで出力する方法

## はじめに
MarkdownをPDFに変換するには、`puppeteer`というソフトが必要です。
puppeteerは、**HTMLをPDFに変換できる**ツールです。

ちなみに、「**Markdownをhtmlで出力する方法**」を知りたい方は、[こちら](https://l.pg1x.com/jGp8)を確認してください。

## 準備
`puppeteer`と`markdown-it-plugin`をインストールします。
“`bash:puppeteerをインストール
$ npm install markdown-it
$ npm install puppeteer
“`

以下のようなフォルダ構造となります。
“`bash:
$ tree -L 1
.
├── convert.js
├── input.md
├── node_modules
├── package-lock.json
└── package.json

1 directory, 4 files
“`

## 実行ファイル
以下を`convert.js`にコピペしてください。

“`javasc

元記事を表示

JWT(JSON Web Token)についての考察

## JWT(JSON Web Token)の定義
[RFC 7519](https://tex2e.github.io/rfc-translater/html/rfc7519.html “RFC 7519”)によると、`JWT`について以下のように定義されています。
> JSON Web Token(JWT)は、2つのパーティ間で転送されるクレームを表す、コンパクトでURLセーフな手段です。 JWTのクレームは、JSON Web Signature(JWS)構造のペイロードとして、またはJSON Web Encryption(JWE)構造のプレーンテキストとして使用されるJSONオブジェクトとしてエンコードされ、クレームをデジタル署名または整合性保護することができます。メッセージ認証コード(MAC)で暗号化されています。

上記の内容が理解できることを目標に解説していきたいと思います。

:::note info
結構誤解されやすいのですが、`JWT`は定義を見ても分かるようにそれ自体が認証について規定しているわけではなく、認証が行われる際に利用される1つの手段に過ぎないことを理解し

元記事を表示

Markdownをhtmlで出力する方法

## はじめに
Markdownをhtmlに変換するには、**レンダラー**が必要です。
今回は`markdown-it`というレンダラーを使ってます。

## 準備
markdown-itをインストールします。
“`bash:markdown-itをインストール
$ npm install markdown-it

added 6 packages in 2s

1 package is looking for funding
run `npm fund` for details
“`

以下のようなフォルダ構造となります。
“`bash:
$ tree -L 1
.
├── convert.js
├── input.md
├── node_modules
├── package-lock.json
└── package.json

1 directory, 4 files
“`

## 実行ファイル
以下を`convert.js`にコピペしてください。

“`javascript:convert.js
‘use strict’;

const
{ pr

元記事を表示

Node.js Test Runnerとビルトインモジュールのみでモジュールモックするヘルパーをつくった

## はじめに

以下の記事で、Node.js Test Runnerで、モジュールのサブセットをモックする方法を書きました。

https://qiita.com/ohakutsu/items/7145f083828df7f0e6e4

しかし、サブセットでないモジュールのモックもしたいときがあるなと思い調べたところ、モジュールモックをできる簡易的なヘルパーができたので紹介します。

なお、今回試すのはCJSです。

## ヘルパーを使ってテストする

サブセットでないモジュール(正しい名前がわからない)と言っているのは以下のようなものです。

“`js:add.js
module.exports = (a, b) => {
return a + b;
};
“`

今回は、 [`node-fetch`](https://github.com/node-fetch/node-fetch) で試します。

テストしたいものは以下の`getExampleBody`関数です。

“`js:index.js
const fetch = require(“node-fetch”);

元記事を表示

npm install パッケージ -g の「-g」について調べた

# 何?何に使うの?
「-g」オプションは、「パッケージをグローバルにインストールするためのオプション」です。
グローバルにインストールすることで、コマンドを省略して実行できます。
例えばtypescriptをコンパイルするコマンド「tsc」ですが、npm installしただけでは使用することはできません。
“`
> npm install typescript
> tsc
tsc : 用語 ‘tsc’ は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確
認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:1
+ tsc
+ ~~~
+ CategoryInfo : ObjectNotFound: (tsc:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
“`
実行するには以下

元記事を表示

バージョン切り替えのコマンド絶対いつも忘れるので一覧化しとく

https://github.com/anyenv/anyenv
最近存在を知ったanyenvであれこれxxenv化したいなぁと思いつつも、すでに汚れてしまった私の環境を整理していくのは腰が重いので、最近よく使う言語のバージョン切り替えをコマンド一覧化しとく

# goenv
“`bash
# バージョン確認
go version
# インストールできる一覧
goenv install -l
# インストール
goenv install {バージョン}
# 設定
goenv global {バージョン}
# 指定のディレクトリにのみ設定する場合はこちら
goenv local {バージョン}
# .zshrcは読み直そう
source ~/.zshrc
“`

# nodebrew
インストールしてあれば `ls-remote` やら `install-binary` のくだりはいらない
“`bash
# インストールした一覧
nodebrew ls
# インストールできる一覧
nodebrew ls-remote
# インストール
nodebrew install-bina

元記事を表示

Azure Function(Nodejs)からマネージドIDでAzure OpenAIを呼び出す

# はじめに
Azure OpenAIを使うなら、マネージドIDでセキュアに利用したいですよね。キーとか持ちたくないです。関連情報は色々とあるもののNodejsのFunctionからという情報があまり見つからなかったので、こちらに記事として残します。

# マネージドIDをつかうAzure FunctionのNodejsのコード

例外処理も何もいれないで素のChatGPTからの返り値をそのままメッセージとして返してるコードです。ポイントは、`@azure/identity`をつかって、`new DefaultAzureCredential()`をいれてクライアントを作ってるところくらいでしょうか
環境変数としては1.エンドポイントと2.モデル名を持っています。(**キーはありません**)

なお、利用したライブラリは`@azure/openai`です。なんか色々あるんですが、ここにもある通り一番公式っぽいのでそれを使いました。
[クイック スタート: Azure OpenAI Service で ChatGPT と GPT-4 の使用を開始する](https://learn.micr

元記事を表示

symbol-sdk@3.0.7で作るマルチシグ化のトランザクション

# はじめに

こんにちは。

symbol-sdkの3系、トランザクションシリーズ第五弾です。

今回はマルチシグをやっていきます。

https://www.npmjs.com/package/symbol-sdk/v/3.0.7

## 注意事項

書いてあるコードについて、正確性や完全性を保証するものではありません。あくまで参考程度として頂き、最新情報は公式ドキュメンテーションをご確認ください。

# 共通

まずは共通となる個所について。デッドラインと鍵ペアです。

“`jsx
import symbolSdk from ‘symbol-sdk’;

const network = symbolSdk.symbol.Network.TESTNET;
const deadline = network.fromDatetime(new Date(Date.now() + 7200000)).timestamp;

const facade = new symbolSdk.facade.SymbolFacade(network.name);

const privateKey =

元記事を表示

Node.js Test Runnerでモジュールのモックをしたい

## はじめに

プライベートで書いているスクリプトのテストをしたいが、メンテナンスするパッケージを増やしたくないと思い、
Node.js v18 から標準で使えるようになった[Node.js Test Runner](https://nodejs.org/api/test.html) を使ってテストできないかを調べていました。

調べてみたところ、モジュールのモックをする方法で少し詰まったので、その解決方法を書きます。
なお、今回試すのは CJS です。

## やりたいテスト

今回やりたかったテストは、テスト対象のモジュール内で使用されている別のモジュールをモックするようなテストです。

例として、以下のスクリプトを使います。

“`js:add.js
exports.add = (a, b) => {
return a + b;
};
“`

“`js:mul.js
const { add } = require(“./add”);

exports.mul = (a, b) => {
let result = 0;
for (let i = 0; i <

元記事を表示

【Node.js】LangChainを使ってChatGPTに自分のデータに対して回答させる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001224/777af3b0-ffd2-0422-dbc1-a67900597b72.png)

前回の記事ではPythonで同じことを行いました。今回はNode.jsを使ってChatGPTに自分で準備したテキストファイルを読ませてそれに対して質問させるアプリのデモを作成します。

* **[【Python】ChatGPTとLangChain使って自分のデータから検索させる](https://asameshicode.com/chatgpt-langchain/)**

## **目的**

ユーザーがChatGPTに質問をするとOpenAIが持っているデータベースを参照して回答してくれます。しかしこのデータは2021年までしか保存されていないため、それ以降のデータは質問しても回答してくれません。しかし自分で準備しておいたデータ(大量のファイルも可能)を読ませておくことで自分の好きな著者と会話をしたり、最新のデータから必要なデー

元記事を表示

AWSで負荷テストを試した(Distributed Load Testing on AWS)

先日fargateで運用しているシステムで負荷テストをDistributed Load Testing on AWSで実施しました。
初めての負荷テストとのことで分からないことだらけでしたが、備忘録的にブログを書こうと思います。

今回構築手順は説明しません。以下の記事が参考になりました。
https://aws.amazon.com/jp/builders-flash/202108/distributed-load-testing/?awsf.filter-name=*all
https://tech.connehito.com/entry/2022/08/23/115302

Distributed Load Testing on AWS とは

AWS公式ドキュメントによると以下の通りです。

> 大規模および負荷時のソフトウェアアプリケーションテストを自動化して、リリース前に性能上の潜在的なパフォーマンスの問題を特定するのに役立ちます。このソリューションは、一定のペースでトランザクションレコードを生成する数多くの接続ユーザーを作成およびシミュレートします。サーバーをプロビ

元記事を表示

話題のCode InterpreterでChatGPT環境にNode.jsをインストールしてみる

インストールというか環境に設置だけ出来たって話です。 2023年7月12日時点話題ですが、ちょっとしたらやれるようになりそうな気がしますよね。

(半分釣りタイトルになってしまいました。期待した人すみません。)

Node.js+MySQL+Dockerを使用したAPIの作成

## はじめに
Node.js+MySQL+Dockerを使用したAPIの作成をしていきます。

記事を書くにあたり、trelloクローンアプリの作成を最終目標としています。
その過程で、バックエンド構築の際に今回の記事の内容で作成してみました。

作成にあたり主に下記の記事を参考にしております。

>【Docker】DockerにMySQL環境を構築する(M1 Mac 対応)
> https://midorigame-jo.com/docker-mysql/
> DockerでMySQL・Node.jsコンテナを用いたToDoリストアプリを作成する
> https://qiita.com/niisan1ban/items/f70eb0ed891568f71f9b
> 次世代の Node.js ORM 、Prisma をサクッと入門する
> https://zenn.dev/pyhrinezumi/articles/431be604f9ad50
> 【Web API】Talend API Testerを使ってみた
> https://www.isoroot.jp/blog/4241/

元記事を表示

symbol-sdk@3.0.7で作るアグリゲートトランザクション

# はじめに

こんにちは。

symbol-sdkの3系、トランザクションシリーズ第四弾。

今回はアグリゲートトランザクションをやっていきます。

https://www.npmjs.com/package/symbol-sdk/v/3.0.7

## 注意事項

書いてあるコードについて、正確性や完全性を保証するものではありません。あくまで参考程度として頂き、最新情報は公式ドキュメンテーションをご確認ください。

# 共通

まずは共通となる個所について。ネットワークやデッドライン、鍵ペアです。

“`jsx
import symbolSdk from ‘symbol-sdk’;

const network = symbolSdk.symbol.Network.TESTNET;
const deadline = network.fromDatetime(new Date(Date.now() + 7200000)).timestamp;

const facade = new symbolSdk.facade.SymbolFacade(network.name);
“`

元記事を表示

symbol-sdk@3.0.7で作る別名(エイリアス・アライアス)トランザクション

# はじめに

こんにちは。

symbol-sdkの3系、トランザクションシリーズ第三弾です。

今回は別名(エイリアス・アライアス)をやっていきます。

https://www.npmjs.com/package/symbol-sdk/v/3.0.7

## 注意事項

書いてあるコードについて、正確性や完全性を保証するものではありません。あくまで参考程度として頂き、最新情報は公式ドキュメンテーションをご確認ください。

# 共通(前半)

まずはアドレス別名とモザイク別名で共通となる個所について。デッドラインと鍵ペアです。

“`jsx
import symbolSdk from ‘symbol-sdk’;

const network = symbolSdk.symbol.Network.TESTNET;
const deadline = network.fromDatetime(new Date(Date.now() + 7200000)).timestamp;

const facade = new symbolSdk.facade.SymbolFacade(networ

元記事を表示

OTHERカテゴリの最新記事