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

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

Node.jsでMicrosoft Graph APIのアクセストークンをMicrosoft Entra ID(AzureAD)で作成したアプリケーションのクライアントシークレットを利用して取得する

タイトルが長くなってしまった…。
いきなり余談だが[Azure Active DirectoryがMicrosoft Entra IDに名称変更](https://www.microsoft.com/ja-jp/security/business/identity-access/microsoft-entra-id)したみたいだ…。

Node.jsでMicrosoft GraphのAPIを使う時に、まず前段としてアクセストークを取得する必要があるのだが、[公式のチュートリアル](https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-console-app-nodejs-acquire-token)だと[msal-nodeモジュール](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-node)を使う方法しか記載がなく、モジュールを使わずに取得する情報が見当たらなかったの

元記事を表示

質問システムのポートフォリオ解説(React+Express)

概要

eduaasという質問システムを作成しました

![スクリーンショット 2023-10-09 18.05.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518441/5486acbb-7afc-b425-7c49-b531ba54a6e7.png)

ソースコード GitHub:

開発環境

フロントエンド:Node.js フレームワーク:React
バックエンド: Node.js フレームワーク:express
データベース: mysql2
現在ローカル環境で作成しています。

1.質問書き込む

![スクリーンショット 2023-10-09 18.19.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2518441/6ff1a036-7ab9-e27c-e1e2-56dfb96

元記事を表示

【メモ】自分のQiita記事のURL取得して、ポートフォリオに載せたい!

## やりたくなった理由

– MERNでの開発方法のチュートリアルをUdemyで見て少し触った。
– Expressで自作も含めてAPIを管理したい。
– Udemyの中でaxiosを使っていたので、実験。
– Qiitaの記事をポートフォリオサイトに載せてみたい。

## 実際にやったこと

1. Express,Reactのセットアップをそれぞれする。+ axiosも!
2. QiitaのAPIをつくる。=> .envにぶちこみ
3. 仮server.jsを作り書き込む

“`javascript

require(‘dotenv’).config();
const express = require(‘express’);
const cors = require(‘cors’);
const axios = require(‘axios’);

const app = express();
app.use(cors());

const port = 5000;

app.get(‘/fetch-qiita-articles’, async (req, res) => {

元記事を表示

【Node.js】ethers.jsでトークンを送信する

最近話題のweb3を使ったアプリケーション作りたいと思い、とりあえずプログラムでトークンを送信することに挑戦しました。

公式のコードを参考にやってみました。
https://ethereum.org/ja/developers/tutorials/send-token-etherjs/

ほぼこの通りなのですが、このままではエラーが出るので修正しました。(後述)

## 動作確認環境
– macOS Ventura
– Node.js v20.0.0

## 準備

### Remix(トークン作成)

作り方はこちら
https://qiita.com/tatsuya1970/items/b68da529bcf1a92c5d10

トークンを作成したら、トークンのコントラクトアドレスを控える。

そして、トークンのABIをコピーし、
AWSのInspectorでSBOM Exportしてみた 前編

## 導入
– 経産省の[「ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引」](https://www.meti.go.jp/press/2023/07/20230728004/20230728004.html)にも記載されている通り、自身が利用するOSSライブラリに対して、依存関係を含むコンポーネントや脆弱性を一覧管理する手段として、SBOMが注目されています。
– 本記事について、
– 前編ではAWSのマネージドサービスである[Amazon Inspector](https://aws.amazon.com/jp/inspector/)のSBOMエクスポート機能を用いて、SBOM ファイルをS3上に出力します。
– 後編では[Amazon Athena](https://aws.amazon.com/jp/athena/)を用いてSBOMファイルに対する分析を実施したいと思います。(近日公開予定)

## Amazon InspectorによるSBOM出力
### スキャン対象の準備
– SBOMスキャン

元記事を表示

jestの公式ドキュメント見ながらテストしてたが、エラー出た

こんにちは、ゆせです。
今回は、案件でjestを使用するとのことだったので、勉強としてjestの公式Docを見ながらやっていました。が、エラーが出たので、もし同じエラーにぶち当たった人に向けて参考になればという思いで記事にしようと思います。

## 本題に入る
以下が、エラー文になります。
“`console
$ npm test
> study-jest@0.1.0 test
> jest

Error: Jest: Failed to parse the TypeScript config file /WorkSpace/NextSpace/study-jest/jest.config.ts
Error: Jest: ‘ts-node’ is required for the TypeScript configuration files. Make sure it is installed
Error: Cannot find package ‘ts-node’ i

元記事を表示

React 基本的な事項を記録

# npm, yarn
javascript パッケージ管理ツール

npm : node package manager
 ーnode.js
 ーreact.js
 で使用する大半のパッケージをインストールできる。

yarn :
 Facebookで作ったパッケージ管理ツール
 npmよりもキャッシング、保安、信頼性が改善された。
 npm install -g yarn : yarn install できる。

*node.js download install
https://nodejs.org/en/download/releases

# 駆動方法
node -v : node.js version 確認
npm -v : npm version 確認
yarn -v : yarn version 確認

*プロジェクトフォルダの中で
npm i -g create-react-app

*プロジェクトフォルダ abc を作って
npx create-react-app abc

yarn start : react サーバーを実行
ブラウザ localhost:3000

元記事を表示

PM2でerroredのまま動かなくなった場合

### PM2
プロジェクト構成を更新した際、何度`pm2 restart`かけても`errored`のまま動かなくなった。
サイト上のHTTPステータスは502で表示されるみたい。

![status:errored](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/990851/d48bf0c1-1852-82bd-b872-03aff71a1b49.png)

### 結論

一度`pm2 delete $var`する。

pm2は一度起動したサービスは`stop`してもサーバー自体が停止しても覚えているようで、サービス構成用のJSONファイルの中身が更新されていなかったことが原因だった。

デバッグは`pm2 logs`が役に立つ。

https://stackoverflow.com/questions/51300544/getting-error-when-trying-to-launch-node-js-app-with-pm2-cluster

元記事を表示

日常業務用にChatGPT(Azure OpenAI Service)とMicrosoft Teamsを連携する。

# はじめに

最近は猫も杓子もChatGPTですね。
本文も、御多分に漏れずChatGPTです。ただし、機密情報を扱えるようにAzure OpenAI Serviceを利用します。
また、最近は日常業務にMicrosoft Teamsをご利用の方も多いと存じます。
本文では、日常業務で手軽にChatGPTをご利用可能なように、TeamsでメンションをするとChatGPTが受け答えをしてくれる仕組みを作ります。

仕組みは簡単。TeamsにメンションをつけるとWebhookしてくれるOutgoing Webhookという仕組みがあるので、Webhoook先にAzure Functionsを用意しておきます。FunctionsからAzure OpenAIをHttp Request経由で呼び出します。言語にはNode.jsを使います。最近のNode.jsでは標準でfetchを使えるから便利。
図にすると以下のような感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25176/094b

元記事を表示

shift-jisのURLにaxiosでpostする

“`js
const axios = require(‘axios’);
const Encoding = require(‘encoding-japanese’);

function toSJIS(keyword) {
const unicodeArray = Array.from(keyword, char => char.charCodeAt(0));
const sjisArray = Encoding.convert(unicodeArray, { to: ‘SJIS’, from: ‘UNICODE’ });
return Encoding.urlEncode(sjisArray);
};

async function test() {
const keyword = ‘あああ’;
const sjisKeyword = toSJIS(keyword);
const data = `param1=${sjisKeyword}&param2=2`;
const response = await axios.post(‘http

元記事を表示

Thirdwebで作成したスマートコントラクトをデプロイするスクリプト作成方法

# はじめに
Tihirdwebを使うとパパッとスマートコントラクトを作成、デプロイできて非常に便利ですね。
しかしスマートコントラクトのConstructorにパラメータがある場合、毎度GUIで設定するのは結構めんどくさくなってきます。特に複雑なパラメータを持ったコントラクトだったり、デプロイタイミングで初期設定用のトランザクションを流したい場合などはもはや苦行としか言えない状態になります。
そこで、デプロイスクリプトからデプロイする方法を紹介します。

# 環境
Node.js、npmが必要になります。作業は以下バージョンで行いました。
“`
# node -v
v18.18.0
# npm -v
9.8.1
“`

# Thirdwebでコントラクト作成
まずはThirdwebで適当なスマートコントラクトを作成します。
今回はERC20で作成しました。
“`
# npx third web create
“`

実行すると作成するコントラクトの種類や名前の入力をせがまれるので以下で入力しました。
“`
# npx thirdweb create

元記事を表示

Python と Java と Go と Node.js と PHP と Ruby のサポート状況について (2023.10)

オープンソース系のプログラム言語のセキュリティサポートの期限をまとめました。他の方の参考になれば幸いです。

# Python のサポート状況

サポートが有効な Python のバージョンは **Python 3.8, 3.9, 3.10, 3.11, 3.12** です。
3.8 は1年以内にサポート終了の予定です。

|バージョン系列|最新バージョン|リリース日|バグ修正の対応期間|セキュリティ修正の対応期間|
|—|—|—|—|—|
|**Python 3.12**|3.12.0|[2023年10月2日](https://peps.python.org/pep-0693/)|[**サポート内**](https://peps.python.org/pep-0693/#bugfix-releases)|[**2028年10月**](https://peps.python.org/pep-0693/#lifespan)|
|**Python 3.11**|3.11.6|[2022年10月24日](https://peps.python.org/pep-0664/#

元記事を表示

NVSを使ってNode.jsのバージョン管理を簡単に

# はじめに
Node.jsは多くのプロジェクトで用いられていますが、プロジェクトごとに必要なNode.jsのバージョンが異なることも少なくありません。

このような場合に便利なのがNode Version Switcher(NVS)です。

# NVS(Node Version Switcher)とは
NVS(Node Version Switcher)はNode.jsのバージョンを簡単に切り替えられるツールです。
複数のNode.jsのバージョンをローカルにインストールし、プロジェクトごとに簡単にバージョンを切り替えることができます。

# NVSのインストール手順

“`terminal: 環境変数の設定とリポジトリのクローン
$ export NVS_HOME=”$HOME/.nvs”
$ git clone https://github.com/jasongin/nvs “$NVS_HOME”
$ . “$NVS_HOME/nvs.sh” install
“`

“`terminal: インストールされたNVSのバージョンを確認
$ nvs -v
1.7.0
“`

元記事を表示

【IBM Cloud】CodeEngineで改行を含む環境変数を扱う

# 発生した問題
Node.jsで開発したアプリで認証ありのRedisサーバーに接続しようとした際、ローカルで動作させて接続できていたものが、CodeEngineにデプロイしたアプリでは正常に接続されなかった。
正確には接続する際の認証に失敗していたようだ。
“`
REDIS_CERTIFICATE=”—–BEGIN CERTIFICATE—–
MIIDHTCCAgWgAwIBAgIUFIO1EGeecAJjDhDdmSdOfCWPboYwDQYJKoZIhvcNAQEL

FTel34h4s8q8kPTaEWuohkoV80IYKLSZthAzzXtJpTW1
—–END CERTIFICATE—–”
“`
証明書を上のような形で環境変数に入れることでローカルでは動作していたが、CodeEngineの環境変数にはこのまま突っ込んでも認識されないようだった。
stand.fmの楽曲利用申請のアプリをgithubにアップロードしました

ただそれだけです。

https://github.com/sinzy0925/standfm_shuuekika
app_gakkyokushinsei.js

元記事を表示

JavaScript エラースタックトレース(コールフレーム)を理解し、デコレータのエラー位置を捉える

## 要約

本記事では、JavaScript で呼び出しコードの位置情報、特にデコレータ関数の位置情報を取得する方法について探求します。JavaScript のエラースタックトレースに深入りし、`Error.captureStackTrace` を使用してコールフレームの位置を捉える方法を学び、エラー位置を特定する方法を理解します。

JavaScript のエラースタックトレースには通常、コード呼び出しの階層構造情報が含まれますが、しばしば多くの無関係な関数呼び出しも含まれます。デコレータパターンなどのシナリオでは、クラスに適用されるデコレータ関数の位置を捉えたいことがあります。この目標を達成するには、エラースタックの構造を理解し、呼び出し位置を正確に取得する方法を知る必要があります。

## 使用事例

特定のエラータイプをスローするためにカスタマイズされたエラークラスがあります。デバッグ目的でエラーがスローされたときにエラー位置を記録するログシステムが必要です。このシナリオでは、最初は `console.log` を使用してエラーの詳細を取得しました。しかし、すべてのエラークラ

元記事を表示

passport.deserializeUser が呼ばれません(初心者です。)

passport.js を使いログイン、ログアウト処理をしています。

ローカルサーバーでは上手くログイン処理ができました。

しかし、別PCでサーバーを立ち上げた所、passport.deserializeUser が呼ばれなくなり、認証、認可処理ができなくなりました。

localhost:3166 と 192.168.1.4:3166 だと cookie のセッションID保存は変わってくるのでしょうか?

宜しくお願い致します。

![スクリーンショット 2023-10-04 144908.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570410/1ee2bd37-8690-37d2-aad0-737fc59a9fe0.png)
![スクリーンショット 2023-10-04 144939.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570410/6f3fa274-1ef5-bc13-2e39-247148f

元記事を表示

Promise.all()を使って反復処理を速く実行

## はじめに
JavaScriptにおいて、for文中で同期処理を利用したい場合にasync/awaitでなくPromise.all()というメソッドを用いると良い、という話です。
自分自身がasync/awaitで反復処理を行い非常に実行に時間を要して困っていたため、記事にしてみました。

## そもそもJavaScriptの同期/非同期処理とは
そもそも、JavaScriptは同期処理であり、非同期処理でもあるプログラミング言語です。
基本的にはコードを上から実行しますが、時間がかかる処理は終了を待たずに進んでいきます。
有名な事例ですが……

“`js
console.log(“A”);
setTimeout(() => {
console.log(“B”);
}, 1000);
console.log(“C”);
“`

上記の場合、”A”が出力され、次にsetTimeout関数が実行され、1秒後にBが出力されることになります。
待ってる間もプログラムの実行が進むので、先に”C”の出力が行われ、最後に1秒後の”B”が出力されます。

## Promis

元記事を表示

Lambda実装で意識すべきこと

実行頻度が低ければ、あまり問題になることはないかもしれません。
ですが負荷試験をやるようなシステムの場合、途端にエラー祭りとなる可能性があります。

自身が経験したことも踏まえ、紹介したいと思います。

:::note warn
Lambdaの実行環境は Node.js 前提で話しています(これしか経験ない)
時折紹介するコード例は全て typescript です
:::

# ライフサイクル

Lambdaはサーバーレスのコンピューティングサービスです。
そのため、といっていいかわかりませんが、開発したコードが実行されるサーバーが常時起動されているわけではないです。
(後述しますが、常時起動設定が可能な`Provisioned Concurrency`という機能も存在します)

以下の流れでLambdaは実行されます。

1. 関数実行のリクエストが送信されると**実行環境の初期化**が行われる
2. **ハンドラ関数**として定義し export した箇所が実行される
3. 関数の呼び出し後、しばらく放置されると(確か5分くらい)**実行環境が破棄**される

補足:ハンドラ関数

元記事を表示

yarnコマンド実行時のエラー「code: ‘ERR_OSSL_EVP_UNSUPPORTED’」の解決法

## ファイル構成
– index.html
“`html










“`

– package.json
“`json
{
“license”: “MIT”,
“scripts”: {
“webpack”: “webpack”
},
“dependencies”: {
“webpack”: “5.22.0”,
“webpack-cli”: “4.5.0”
}
}

“`

– webpack.config.js

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

module.exports = {
entry: ‘./src/index.js’,
output: {
path: path.r

元記事を表示

OTHERカテゴリの最新記事