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

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

[node.js][pm2][ts-node]PM2をOS起動時に自動起動する(core dumpを作成しないようにする)

## 概要
PM2で管理しているnode.jsアプリケーションのOS起動時に自動起動する設定を行います。

自動起動スクリプトをそのまま使用した際、OSのユーザー設定でデフォルトがcore dumpファイルを作成しないようになっていても、作成されてしまう事があったので、作成しないよう修正をします。
(amazon linux2だとデフォルトはコアダンプを作らないようなっているっぽい?)

core dumpファイル(core.xxx):
クラッシュした内容などが書かれているファイル。
数百MBや1GBくらいをポンっと作ってしまうので、PM2で自動起動→停止→自動起動→停止を知らず繰り返しているとサーバーのディスク容量がいっぱいになるので、注意が必要になります。

詳細を調べたいときや(OSクラッシュ時など)容量に十分空きがあればよいですが、nodeアプリケーション停止でPM2が出力するエラーログ以上のものが不要でしたら作らなくてもよいのかなと思いました。

## 環境
– サーバー:amazon linux 2
– node:16.13.1
– pm2:5.3.0
– viでファイルの

元記事を表示

[node.js][pm2][ts-node]PM2を使ってアプリケーションを永続化・ログローテーションでログを管理する

## 概要
node.js / expressで構築し、ts-nodeで起動しているアプリケーションのプロセス終了を感知して再起動してくれるPM2のインストールメモです。

ログの肥大化を防ぐために、ログローテーションも行うようにします。

メモリ不足などの場合、nginxやapacheのWebサーバーが反応しなくなる的なイメージを持っていましたが、nodeはプロセスがパタっと止まってしまうんですね。勉強になりました。

PM2のアプリケーションをOS自動起動設定にした場合、コアダンプ(core dump)ファイルを作成しないようにする設定は[こちらの記事](https://zenn.dev/tsonwk/articles/ed9f782ebcd6b1)をご確認すださい

公式サイト
https://pm2.keymetrics.io/

## 留意点
ホットリロードをするわけではなく、登録しているアプリケーションのプロセスが落ちたら、起動をしてくれるものになります。
そのため、プロセスが起動するまでの間はアプリケーションへ接続が出来なくなります。
(私の環境ではts-nodeで起動し

元記事を表示

【Node.js】インストールとHelloWorld(Windows・Mac・Linux・AWS EC2)

## この記事の内容

Node.jsを各OSにインストールする方法と簡単な使い方を紹介します。

– [Node.jsとは](#nodejsとは)
– [1. Node.jsのインストール](#1-nodejsのインストール)
– [2. Node.jsでWebサイト作成](#2-nodejsでwebサイト作成)

## Node.jsとは

[Node.js](https://nodejs.org/ja)は、JavaScriptでサーバーサイドのアプリを作るためのプラットフォームです。
ApacheやNginxなどようなhttpサーバー機能が備わっています。

## 1. Node.jsのインストール

Node.jsをインストールする方法は以下の2通りがあります。
* **① [Node.jsの公式サイト](https://nodejs.org/ja)から**
* **② ターミナルのコマンドから**

**Windows、Mac、GUI操作できるLinuxにインストールする場合は ▶︎ ①**
**Linuxコマンドでインストールする場合は ▶︎ ②**
の方法でインストール

元記事を表示

Reactの開発環境を作る手順を残しました

# まずは設定(していない人)
### node.jsをインストール
https://nodejs.org/ja/download

### Yarnをインストール
~~~
brew install yarn
~~~

### バージョンが確認できたら成功
~~~
node -v
yarn -v
~~~

## アプリ作成

開発するディレクトリで以下のコマンドを実行
~~~
npx create-react-app react-test
~~~

## コンポーネントを作成
以下のディレクトリにコンポーネントを作成
~~~
– src
– Header.js
– About.js
– Services.js
~~~
~~~md:Header.js
import React from ‘react’;

const Header = () => {
return (

My

);
};

export default Header;
~~~
~~~md:About.js
import Rea

元記事を表示

Astro.jsでテーマファイルをインストールする – 一言メモ

# Astro.jsでテーマファイルをインストールする

“`javascript
npm create astro@latest — –template satnaing/astro-paper
‘ 「npm create astro@latest」でAstroの初期設定が行える
‘ 「– –template」に注意
‘ 「satnaing/astro-paper」には、作者/テーマ名※下記画像の赤線部
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119135/90f8c344-1ffc-1eed-cb4b-376c329e3569.png)

– まだ日本語になっていないページに記載
https://docs.astro.build/ja/reference/publish-to-npm/
– Astro.jsのテーマファイルのGithubのReadMeに記載がなかったため、備忘録として残す

元記事を表示

Vue.js を初めてみる

オンラインスクールを卒業したばかりの転職活動中未経験者です。

PHPについてある程度学びましたが、違う事にも挑戦っということで本日より、
Vue.js
について学習してく傍らアウトプットも兼ねてと初めての投稿です。

環境開発(OS:mac)

1 node.lsのダウンロード
2 ターミナルを起動
3 作業用のディレクトリに移動
4 環境構築
“`
npm init vue@latest
“`

この後の選択はほとんどNOでいいらしいが、、、、参考にさせてもらった以外の所では違うことを言っていたので保留で、、

5 VScodeにてファイルを開き、ターミナルを表示
  4.完了後に出てくる3行の真ん中を再度打ち込む
“`
npm install
“`
6 サーバー起動して確認
“`
npm run dev
“`

nodeのverが古い物だとエラーが出ることもあるらしい

以上で完了?しました。

取り敢えず第一歩を踏み出したということで、引き続き勉強していこうと思います。

元記事を表示

/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年までしか保存されていないため、それ以降のデータは質問しても回答してくれません。しかし自分で準備しておいたデータ(大量のファイルも可能)を読ませておくことで自分の好きな著者と会話をしたり、最新のデータから必要なデー

元記事を表示

OTHERカテゴリの最新記事