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

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

WSL環境にNode.js環境を構築する

こんにちは。絶賛AWSをいじっている @masatomix です。
WindowsのWSL環境で [AWS CDK](https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/getting_started.html#getting_started_prerequisites)を使いたくて Node.js をセットアップしたときのメモ。

anyenv → nodenv → Node.js って順番で入れていってます。

### anyenvのインストール

公式( https://github.com/anyenv/anyenv#manual-git-checkout )を参考にインストールを進めていきます。

“`console
$ anyenv
anyenv: command not found

$ git clone https://github.com/anyenv/anyenv ~/.anyenv

Cloning into ‘/home/sysmgr/.anyenv’…
remote: Enumerating objec

元記事を表示

GitHub Codespacesでの実行か、GitHub Actions上での実行かを環境変数で判定する

GitHub Codespacesで開発して、GitHub Actionsにデプロイするときにデプロイ先なのかローカル(とは言わなそう)なのかの判定をして処理を振り分けたい時があります。

## コピペ用振り分け

こんな感じで環境変数で振り分けができました。 2023/8/4時点の環境なので仕様が変わる可能性はあります。

“`js

if(process.env.CODESPACES){
//Codespacesでの実行
}else if(process.env.GITHUB_ACTIONS){
//GitHub Actionsでの実行
}
“`

## それぞれ独自の環境変数

GitHub Codespacesの場合は環境変数に`{“CODESPACES”: ‘ture’ }`があり、GitHub Actionsの場合は`{“GITHUB_ACIONS”: ‘ture’ }`が入っています。

– Codespaces

> ![スクリーンショット 2023-08-04 17.57.50.png](https://qiita-image-store.s3.ap-n

元記事を表示

Notion APIでロールアップのカラムの検索をする

https://www.npmjs.com/package/@notionhq/client こちらの公式のSDKを使って試していて、

学籍番号で学生の検索をかけようとした時の話題です。

## 文字列プロパティからロールアップになる現象

元々は文字列で直接入ってましたが、管理する上でデータ定義がされていくとDBが分かれてリレーション/ロールアップになっていくのは必然な気もします。

元々は以下のような指定で学籍番号にPEO05が含まれたら検索するといった検索をしていました。

“`js
const res = await notion.databases.query({
database_id: studentDBId,
filter: {
or: [
{
property: ‘学籍番号’,
rich_text: {
contains: “PEO05”
}
}
],
},
});
“`

データベースの正規化によ

元記事を表示

Node.jsに関してChatGPTに聞いてみたメモ

:baby_bottle:Node.jsを日常に例えると?

:robot:Node.jsを日常に例えると、レストランのキッチンに似ています。レストランのキッチンでは、オーダーを受けて料理を調理し、出来上がった料理を提供する役割があります。Node.jsも同じように、ウェブアプリケーションやサーバー上での処理を担当し、データの処理や情報の提供を行います。
1. **オーダーを受ける**:
レストランのキッチンでは、ウェイターやウェイトレスが顧客から注文を受けます。Node.jsもクライアント(フロントエンド)からのリクエストを受け付けます。

2. **調理と処理**:
キッチンでは、シェフが注文に合わせて食材を調理し、料理を仕上げます。Node.jsもリクエストに対応するためにデータベースの操作やロジックの処理を行います。

3. **提供**:
キッチンから出来上がった料理が出てきて、顧客に提供されます。Node.jsも処理が完了したデータや情報をクライアントに提供します。

4. **複数のオーダーを同時に処理**:
キッチンでは複数の注文を同時に処理する

元記事を表示

CDKでNode.jsのLambda関数を作るときにjs|ts以外のファイルをバンドルする

# TL;DR

`bundling.commandHooks.beforeBundling`
を定義して、その中で`cp`でコピーしてあげればOK!

“`ts
new NodejsFunction(this, ‘lambda’, {
runtime: Runtime.NODEJS_18_X,
architecture: Architecture.ARM_64,
functionName: ‘my-nodejs-function’,
handler: ‘handler’,
entry: ‘lambda/index.ts’,
bundling: {
commandHooks: {
beforeBundling(inputDir: string, outputDir: string): string[] {
return [`cp ${inputDir}/lambda/hoge.txt ${outputDir}`];
},
afterBundling(): string[] {
retu

元記事を表示

Stripe BillingでサブスクリプションをWebアプリに組み込む

# 目的
* 本記事は、Stripeでサブスクリプションを実装する時に必要となったノウハウを整理します
* 決済画面で購入をしてから、退会をするまでの範囲について、どのように決済状態を識別するのか。対象のユーザをどう識別するのか。といった制御時に必要なパラメータなどについて最小構成を整理します
* 公式ドキュメントに準拠して進めます。実際にそれに沿って進める中で「Webアプリに組み込むにあたって課題になった」ポイントや、ドキュメントから読み解けなかった課題、などにフォーカスして、分かったことを共有します
* 記載内容について、もしよりベストプラクティスに沿った方法が別にあるようでしたら、ご助言いただけますと幸いです

# ゴール
* 購入してから解除されるまでの範囲で、apiレスポンスのどの値を見る必要があるのか。
* checkoutを行なったユーザとwebHookで取得したイベントの実施ユーザが同じであることをどう特定するのか
* 単純なコースのアップデートと、キャンセルをどのパラメータを見て仕分けるのか
* といった実装時迷ったポイントを整理します
* また、テストクロックで

元記事を表示

watsonxのAPIをNode.jsから呼び出してみる

# はじめに
前回の記事「[watsonxのAPIを呼び出せるようになるまで](https://qiita.com/katahiro/items/3258cd42226ed82268ac)」では、 `curl` コマンドを利用してwatsonxのAPIを呼び出すことを紹介しましたが、今回の記事では `Node.js` から呼び出す方法を紹介します。
本当はNode.js用のSDKが公開されていれば良いのですが、2023/8/3時点ではPythonしか無いので、Node使いとしてはSDK無しでの実装が必要です。

### 実行環境
– node: v18.17.0
– npm: 9.6.7
– os: windows 11

# コード紹介
とりあえずコード全文。
Node.jsのv18から `fetch API` が素で使えるようになったので、特にpackageにモジュールを追加していません。
ただ、v17以前の環境で動かす場合、 `node-fetch` のモジュールで置き換えても動作することは確認済です。
“`index.js
(async() => {
const WML_

元記事を表示

Node.jsでファイルの読み書き

## fsモジュール
fsモジュールは、Node.jsでファイルの読み書きを行うための基本的な関数を提供するモジュール。
今回はこれを使用して基本的なファイル操作を試してみる。

## 同期形式と非同期形式
fsモジュールが提供しているすべてのメソッドには、非同期形式と同期形式が用意されている。
非同期処理を利用すると、処理の完了を待つことなく受付の完了のみを応答するため、エンドユーザーに対する応答性の改善や処理能力の改善を図ることができる (=メリットが多い)ため、処理内容が非同期処理でも問題ない処理であれば、非同期処理を選ぶと良いらしい。

## 事前準備
fsモジュールを呼び出しておく。
“`
const fs = require(“fs”);
“`

## ファイルの内容を読み込む
ファイルの内容を読み込みたい場合は、readFileSyncメソッドを使えば実現できる。
ファイルの読み書きは存在の有無や権限、ファイルシステムの違いなどによって例外が発生しやすいので、必ずtry~catchでエラーハンドリングを行う。
文字コードを指定したい場合、第二引数で直接指定できる。今回

元記事を表示

さくっとSvelteインストール

さくっとSvelteをインストールして、デモページを表示することを目標にします。

# 特徴
仮想DOMを使用しないため、パフォーマンス良く、バンドルサイズを少なくできます。

# 準備するもの
– MacOS
– Nodeの最新バージョン
– VSCode

# Nodeの最新バージョン
※以前の[記事](https://qiita.com/penta-design-system/items/4139dd63ae54ab0d1c35#node%E3%81%AE%E6%9C%80%E6%96%B0%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3)でNodeのバージョン管理ツールからインストールする方法を記載しています!

# SvelteKitをインストール
Svelteのコンパイラを使用するUIフレームで、SvelteとViteで構成されています。
VueでいうところのNuxtになります。

“`
npm create svelte@latest svelte-samlple
“`
オプション選択

“`
◇ Which Svelt

元記事を表示

初めてVoltaっちゅうものを触ってみた。

# 初めてVoltaっちゅうものを触ってみた。

初めてVoltaを触ってみた時の感想や、備忘録的なものをつらつらと書いていきます。

参考: https://dev.classmethod.jp/articles/node-version-volta/

## インストール

bashを使っているので、

“`bash
$ curl https://get.volta.sh | bash
“`

> windowsの場合はインストーラーがあるらしいけど、↑で問題なくできたし、個人的には楽な気がする?

## Node.jsをインストールする

今回は、`v18.16.0`を使うのでこれを指定する。

“`bash
$ volta install node@18.16.0
$ node –version
v18.16.0
“`

マイナーバージョンは省略できるみたい。

“`bash
$ volta install node@18
“`

## Voltaのpinを使って、ディレクトリ毎にNode.jsのバージョンを固定できるらしい

“`bash
$ mkdi

元記事を表示

@antfu/niのniコマンドがPowerShell上で実行できない問題を解決する

[@antfu/ni](https://github.com/antfu/ni) は `npm install` を `ni` に短縮してくれる便利なコマンドですが、WindowsのPowerShell上では**初期状態だと `ni` を使用できません**。
New-Itemコマンドレットのエイリアスとして `ni` が設定されているためです。

“`
PS> ni

コマンド パイプライン位置 1 のコマンドレット New-Item
次のパラメーターに値を指定してください:
“`

そこで、下記の通り設定を行うことにより、PowerShellでもniコマンドを使用することができます。

# 設定の概要

PowerShell起動時、Remove-Aliasで`ni`のエイリアスを削除するように設定します。
ただし、Remove-Aliasは**PowerShell 6.0以降でないと使えない**ため、合わせてPowerShellも最新版にバージョンアップします。

# 設定手順

(1) PowerShellのバージョンを確認

“`
PS> $PSVersionTable

元記事を表示

No version is set for command npm Consider adding one of the following versions in your config file at nodejs

## 概要

‘npm install’コマンドを行おうとした際、下記のエラーが起きたので、自分の備忘録としても記載
「No version is set for command npm Consider adding one of the following versions in your config file at nodejs ~version~」

### 結論
インストールしたnode.jsをグローバルに設定できていなかったため。

### 解決策
“`
asdf global nodejs <バージョン>
“`

これにより、Node.jsの指定のバージョンに設定され、プロジェクトを作成する際にデフォルトでこのバージョンが使用されるようになる。
### 補足
**asdf**
複数のプログラミング言語のバージョンを管理するツールの1つ。
asdfを使用することで、異なるバージョンのプログラミング言語を簡単に切り替えることが可能。
asdfは、Node.js、Ruby、Python、Javaなどのプログラミング言語のバージョン管理に広く使用されている。
asdfを

元記事を表示

Infisicalを使ってみる

# Infisicalを使ってみる

Twitterで唐突に流れてきた記事にふと目が止まりました。
[記事](https://twitter.com/k1_c_/status/1683825202076213249)

AWSを封じられた環境下ではいつも『ParameterStoreを使えたらなぁ。。。』と思う機会が多いので、
OSSで似たようなことができるのは個人的にかなり興味ありありです。

# Infisicalってなに?

公式より引用

* .envをやめて環境依存値を一元管理しよう
* Dockerとかkubernetesとかの定義ファイルのパラメータ参照にも利用できるよ(まじ?)
* OSSで便利なUI付きのSecretManagerだよ
* ありとあらゆるCI/CDと連携できるよ
* 色んな言語向けにSDKを提供しているよ(Node/Python/Java/etc…)

[公式サイト](https://infisical.com/)

# 期待すること

* VSCodeとかIntelliJで各環境定義(env/application.properties/over

元記事を表示

TypeScriptにおいてCommonJSとES Moduleの両方に対応するパッケージを作る

## はじめに

最近ではNode.jsのライブラリでも、[pure ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c)の考え方でES Moduleのみでしか利用できないものも出てきている。とはいえ、[npm-esm-vs-cjs](https://github.com/wooorm/npm-esm-vs-cjs/tree/main#data)というリポジトリのデータによると、以下のようにCommonJSのライブラリのほうが圧倒的に多く、ES Moduleのみはまだ10%程度しかない(みたい)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372684/ae19b418-ba15-9975-2d4e-35533dfd7abb.png)

そこで、今回はライブラリを公開する際に、CommonJSとES Moduleの両方をサポートするようなプロジェクトの設定についてみていきたいと思う。

元記事を表示

【nodenv】インストールできるバージョンの最新化

## はじめに

今日 Node.jsのLTSバージョンを調べたところ`18.17.0`だったので、`nodenv`を利用してインストールを試みたところ、バージョン一覧に表示されませんでした。
そこで`nodenv`でインストールできるバージョンを最新化します。

### 環境

– Intel Mac 13.4.1(c)

### 前提

– `nodenv`が利用できること

## 手順
### 対応前の状態

対応前に`v18`でインストール可能なバージョンは以下のようになってました。(`18.17.0`が無い)

“`sh
# nodenvのバージョン
$ nodenv –version
nodenv 1.4.1

# node-buildのバージョン
$ node-build –version
node-build 4.9.117

# 18系でインストール可能な一覧
$ nodenv install –list | grep -e “^18”
— 省略 —
18.16.0
18.16.1
“`

### 最新化

#### `nodenv`を`Home

元記事を表示

新しくフォルダを作らずにNext.jsのWebアプリケーションを作成

# 新しくフォルダを作らずにNext.jsのWebアプリケーションを作成したい!!

## 動作環境
– Linux
– Node.js
– Next.js

## フォルダを作成してWebアプリケーションを作成する場合

exampleAppフォルダを作成してNext.jsのWebアプリケーションを作成する場合は次のコマンドを実行する

“`
app# npx create-next-app exampleApp
“`

“`
app
|- exampleApp
|- .next
|- node_modules
|- public
|- src

“`
exampleAppフォルダ作成後、アプリケーションが作成される

## フォルダを作成してWebアプリケーションを作成する場合

現在のディレクトリにWebアプリケーションを作成する場合は次のコマンドを実行する
“`
app # npx create-next-app –use-npm .
“`
“`
app
|- .next
|- node_modules
|- public

元記事を表示

Powershell(Win11)でもbundle-analyzerを(無理やり)動かす方法

# 動かし方
“`posh
npx env-cmd -f .env.analyze next build
“`

本当はもっと効率のいいやり方や環境変数を活用する方法などはありますが、個人的にはこれが一番手っ取り早いです。

ボトルネックは早く特定したいですからね。

ちなみにNextJsのサーバーを止めないとPermittion errorになるのでお気を付けて?

ではー

元記事を表示

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 p

元記事を表示

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);

co

元記事を表示

Windows上でDocker越しSonarQubeを起動して、ローカルソースをコード検証する

# 概要

Windows環境で、Dockerイメージを用いて簡単にSonarQubeサーバーを起動して、
ローカルのソースのコード検証を行う方法を説明する。

今回の検証対象のコードはNode.js(JavaScript / Vue.js)とする。

## 目的

SonarQubeによるコード検証を、Windowsのローカル環境で簡単に試すことを目的とする[^1]。
SonarQubeサーバーの起動には**Docker版**を用いるものとする。
Docker Desktop for Windows WSLバックエンドをインストール済みの環境、を前提とする。

Dockerを用いる理由は、「SonarQubeサーバーの**Zip版**を取得して起動する方式」でも手順自体は簡単だが[^2]、
一方でその公式ガイドを見に行くと「`Download and install Java 17 on your system.`」の記載があり[^3]、
Java 17と既存環境との整合を考慮するのが面倒だったため(2023-07-04時点)。

[^1]: 公式が、ローカル インスタンスをインス

元記事を表示

OTHERカテゴリの最新記事