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

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

Ubuntu 22.10にNode.jsとnpmをインストール

“`bash
sudo apt install -y npm
“`

環境

“`bash
$ cat /etc/os-release
PRETTY_NAME=”Ubuntu 22.10″
NAME=”Ubuntu”
VERSION_ID=”22.10″
VERSION=”22.10 (Kinetic Kudu)”
VERSION_CODENAME=kinetic
ID=ubuntu
ID_LIKE=debian
HOME_URL=”https://www.ubuntu.com/”
SUPPORT_URL=”https://help.ubuntu.com/”
BUG_REPORT_URL=”https://bugs.launchpad.net/ubuntu/”
PRIVACY_POLICY_URL=”https://www.ubuntu.com/legal/terms-and-policies/privacy-policy”
UBUNTU_CODENAME=kinetic
LOGO=ubuntu-logo
“`

元記事を表示

lodashはメソッドによってファイルサイズが全然違っていた

# 概要

Lodashは便利なnpmパッケージですが、ファイルサイズが非常に大きいです。
圧縮前で71.5kB、圧縮後で25.2kBなので、`import _ from ‘lodash’` をフロントエンド開発でやってしまうと、画面のJSロード時間に影響が出てしまいます。
解決策として、`import range from ‘lodash/range’`のように、1つのメソッドだけをインポートすることが知られています。
しかし、実はメソッドによってファイルサイズが異なります。
例えば、`lodash/max` は 1.6kB ですが、`lodash/omit` は 21.5kBもあります。これは `lodash/omit` がいくつかの内部メソッドをインポートしているためで、特に `_baseClone.js` のファイルサイズが大きいからです。
このようにインポートする内部メソッドによってファイルサイズがかなり異なるため、全てのメソッドのファイルサイズを計算してみました。

# メソッドごとのファイルサイズ
| Function Name | File Size(kB) | G

元記事を表示

Node.jsでタイムゾーンを指定する

# Javascriptのタイムゾーン
最近ではクラウド環境を利用することも多くなり、ローカルはJSTでクラウドはUTCの設定になっていることなどがよくあると思います。
この影響でローカルではうまく動いていたのにデプロイすると日付がちがーう!!!なんてことも・・・
ということで今回はサーバー側にNode.jsを利用していた場合にはタイムゾーンを固定することができるようだったので備忘として残そうと思います。

# タイムゾーンの指定
日付を扱うためのnpmライブラリには[Moment.js](https://www.npmjs.com/package/moment)や[date-fns](https://www.npmjs.com/package/date-fns)、[cdate](https://www.npmjs.com/package/cdate)、[luxon](https://www.npmjs.com/package/luxon)など様々なものがあるようです。
正直どれもよくわかってないのですが、、、今回のタイムゾーンを固定するという目的からするとライブラリは使用せずに環境変

元記事を表示

Express+Typescriptプロジェクトのひな形をささっと作る

普段Angularを書いていて、CLIに任せることが多いので1からTypescriptプロジェクトを作ったメモ。
ExpressのAPIサーバが急遽必要になったので、ささっと作ってみました。

# 環境
* Windows10 + WSL2
* Node v18.14.0

# 手順
#### プロジェクト作る
“`
mkdir my-app
cd my-app
npm init
“`

#### 必要なものインストール
“`
npm install express
npm install -D typescript @types/express rimraf@3.0.2 @types/rimraf@3.0.2 cpx @types/node
npm install -D ts-node nodemon
“`
rimrafはちゃんと調べてないですがバージョン指定せずに入れるとbuildでエラー吐いたためバージョンを落としてます。
ts-nodeはトランスパイルせずTypescriptのまま実行したいために。
nodemonはソースコードの変更を検知してホットリロードしたいために

元記事を表示

AZ-400:Azure Artifacts フィードへの npm パッケージ公開

この記事は、Designing and Implementing Microsoft DevOps Solutions(AZ-400)の受験勉強の中で、自分が間違えやすい、覚えにくいと思ったポイントの一つをまとめたものです。同じく資格取得に向けて勉強されている方の参考になれば幸いです。

## Azure Artifacts

Azure DevOps の Artifacts を使うと、開発者はフィードに NuGet や npm などのパッケージを発行し、同じチーム、組織、パブリックに共有することができます。

### アクセス制限

フィードの操作については、Azure DevOps のプロジェクト、その上の組織の 2 種類のスコープでアクセス制限を行うことができます。
ブラウザから操作して設定する場合は、プロジェクトのフィードに対してアクセスレベルを設定する形式となります。
アクセスレベルには下記があります。

– Reader
– Collaborator
– Contributor
– Owner

Reader/Collaborator でもパッケージの一覧表示/インストール

元記事を表示

冷やし中華じゃなくてYouTube始めました、なぜか。

YouTubeチャンネルを開設しました。そのお知らせのざっくり記事です。
(冷やし中華全く関係ないですごめんなさい)
# 経緯
自分は約7年ほどフリーランスで生計をたてた後、数年前に法人成りしたソフトウェアエンジニアで、主にwebアプリ開発をメインにお仕事させて頂いています。
開発業務の他にも、これまでに初学者メインの学習会等を運営した経緯があり、現在もDiscord上で毎週火曜夜に交流会を主催しています。

自分のメインフィールドは、JavaScript/TypeScript、Node.js、Reactなので扱うトピックはこれらが主になります。現在開催している交流会では、フロントエンド開発の話題を中心に参加者の発表や質疑応答等を実施しています。

Discordはこちらです:wave:
[discord.gg/zPhh4KeBm5](https://discord.gg/zPhh4KeBm5)

前置きが長くなりましたが、この交流会において自分の好みでピックアップした世界中の話題を延々と喋るということをやっています。
話題のジャンルはもちろん上記の技術ネタです。

これまでは数人に対

元記事を表示

Oracle Linuxで公式が対応していないバージョンのNode.jsに対応させる

## 公式のサポートについて
* 今のところNode.js16までしか対応していない。
https://yum.oracle.com/oracle-linux-nodejs.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179803/e5aacd21-d137-298e-7ce6-4a670b51c761.png)

Oracle linux側が用意している「oracle-nodejs-release-el7 」とか入れる必要があるが、これの代わりに普通に指定したバージョンのNode.jsを入れようとするとうまくいかない。
いったんそのままNode.js16のやつが入ってから、指定したバージョンものを入れ直すとうまくいくことが分かった。

## 解決の流れ
※oracle-nodejs-release-el7、nodejsをそれぞれyumでインストールするが、ここで直接Node.jsのバージョンを指定できない。ちなみに僕は「オラクルLinux7」のイメージを使用している。

元記事を表示

nvm 使用方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3076318/23aa843b-d389-00cb-fb3a-494deb419e1f.png)

# 概念説明

## nvm

node Version Manager、省略してnvmと呼びます。nodeのバージュン管理ツールです。

nvmを利用する事で、任意バージュンのnodeを簡単にインストール、削除、切り替わって使用や設定ができます。

例えば、Aにnode12を使わせて、Bにnode14を使います。

## node

node.js、省略してnodeとも言います。

Chrome の V8 エンジンで動作する JavaScript 環境です。オープンソースかつ高性能で JavaScript 環境 中の TOP です。

## npm

node Package Manager、またはnpmとも言います。nodeのパッケージ管理システムです。

簡単に説明すると、App Storeみたいなものです。他の人が開発したnode.j

元記事を表示

どうしてもラズパイZeroWで最新(v3.4.4)のなでしこ3を動かしたい!

# 発端
 Raspberry Pi ZeroWになでしこ3をインストールする、あるいはarmv6lがサポート外となったv12以降のnode.jsの非公式ビルドをインストールをしてみた件については以前も書きました。

https://qiita.com/snowdrops89/items/2378046916f0cfb9fbd1

 しかし、それから一年半ほど経過し、なでしこ側の状況も大きく変わっています。
 当時は、node.js v12以上が**推奨**だったのですが、現在の最新バージョンv3.4.4ではv16以上が**必要**になっているようです。(2023/2/9現在)

 windows版も、v3.3.3以降、旧バージョンのnodeでは起動出来なくなっちゃっており、当時ワタクシのPCがwin7だったために、これまた苦労したものでした。

https://qiita.com/snowdrops89/items/eb90af3500a99ee5ceda

 以前はラズパイZeroWに標準で入るnode v10でも、なでしこ3インストール時に赤や黄色のWARNの嵐になりはするもの

元記事を表示

【Express】express-generatorで作成した雛形でHTTPSサーバーを起動する【Node.js】

## はじめに
Node.jsとかExpressの公式ドキュメントは基本的にhttpサーバーの立ち上げ方しか解説されておらず、httpsサーバーはどうやって立ち上げるんじゃ?と思ったので、それをやります。
## やること
いつもの雛形に
①証明書配置用のディレクトリを作成して秘密鍵と証明書を配置
②bin/wwwを修正してhttpsサーバーを作成
の2点のみ。

## 環境
– Node,js:18.12.0
– npm:9.2.0
– Express:4.18.2
– EJS:3.1.8(別に必要ない)

## 1.雛形を作成
いつものやつ(テンプレートエンジンはejs)。
“`
$ npx express-generator –view=ejs <アプリ名>
$ cd <アプリ名>
$ npm install
“`
## 2.SSL証明書を配置
証明書配置用のディレクトリを作成し、
“`
$ mkdir .ssl
“`
秘密鍵と証明書を配置。
※証明書の作成方法は割愛
“`
$ ls .ssl
server.crt server.key
“`
## 3.bin/ww

元記事を表示

NodeのVersionUP

“`
sudo npm install -g n
sudo n stable
“`

このコマンド。
参考記事:https://qiita.com/kerupani129/items/60ee8c8becc2fe9f0d28

元記事を表示

Node.js: setTimeout の使い方

## プログラム

“`js:timeout_test.js
#! /usr/local/bin/node
// timeout_test.js
//
// Feb/08/2023
//
// —————————————————————
‘use strict’
// —————————————————————
function first_function(aa,bb)
{
console.error(“This is the first function”)
console.error(“aa = ” + aa)
console.error(“bb = ” + bb)
const sum = aa + bb
console.error(“first: sum = ” + sum)
}

// —————————————————-

元記事を表示

blastengineのバルクメール編集リミットに達した場合の対応

blastengineはエンジニアフレンドリーなメール送信サービスです。メールを即時配信するトランザクションと、一括配信するバルクメールに対応しています。

バルクメールでは、まずテンプレートを保存します。そして、そのテンプレートに対して宛先情報を登録して送信を行います。その際、以下のようなエラーメッセージが出る場合があります(エラーメッセージは加工済み)。

`Exception: Error in main: number of EDIT statuses exceeds 10.`

これは、EDIT(メール送信されていない状態)のメールテンプレートは10個までしか保存できないことに起因して発生するものです。こうした状態のメールは適宜削除、または送信処理を行う必要があります。

## 削除対応について

今回はNode.js SDKを使って削除してみます。インストールは `npm` コマンドで行います。

“`
npm i blastengine
“`

### ライブラリのインポート

ライブラリをインポートします。TypeScriptなので、実行時には `ts-node`

元記事を表示

express-validatorでJSONのデータ型をチェックする

## 要旨
JSON形式のリクエストボディについて`express-validator`でデータ型をチェックする場合、以下のようにvalidatorを実装する。

“` json
{
“string”: “abc”,
“int”: 123,
“float”: 123.456,
“boolean”: true,
“object”: { “key”: “value” },
“array”: [“a”, “b”, “c”]
}
“`

“` js
[
// 文字列
body(‘string’).isString(),
// 数値(整数)
body(‘int’).isInt().not().isString(),
// 数値(浮動小数点数)
body(‘float’).isFloat().not().isString(),
// 真偽値
body(‘boolean’).isBoolean({ strict: true }),
// オブジェクト
body(‘ob

元記事を表示

【React】React+Expressの構成でpostを実行する

## 構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884542/f858b075-bdb1-9e2c-3ba3-1230793c7979.png)

ReactのApp.tsxからnode+expressで作っている、バックエンドにpostをするイメージです。
バックエンドはMySQLと繋がっています。

## コード
“`typescript:App.tsx
const App = async () => {
try {
await axios.post(“http://localhost:3100/api”, {
date: “2023/02/07”,
id: 1,
name: “name”,
});
} catch (error) {
console.error(“error=” + error);
}
};
“`

“`typescript:inde

元記事を表示

Bun, Deno, Go, Node, Rust, Zig: ベンチマーク

# Bun, Deno, Go, Node, Rust, Zig: シンプルな Web Server ベンチマーク

vim-jp slack の #lang-go で、Go vs Node が土日に繰り広げられていました(月曜日気づいた)。
mattn さんが、Go と Node の速度を比較するベンチマークを書いていたので、それを bun, deno, go, node, rust, zig で書いてみました。
(zig わからないので未完成です ?)

https://github.com/ekusiadadus/bench-web-server

## ベンチマーク

### Apache Bench

| Language | Requests per second | Time per request |
| :——- | :———————- | :—————- |
| bun | 11793.40 [#/sec] (mean) | 0.848 [ms] (mean) |
| deno |

元記事を表示

node.jsインストール(nvm for Windows)

# 前提

Windowsにnode.jsをインストールする。
nvmを使ってインストールすることでnode.jsのバージョンを切り替えられるようにする。

現時点、node.jsのバージョンは16.xを使うこととする。
理由 : AWS Lambdaでサポートするランタイムが `Node.js 16` までだから。

マイナーバージョンはプロジェクトで利用の関係上、後述のバージョンとする。

## 入手

– https://github.com/coreybutler/nvm-windows
– nvm-setup.exe

## インストール

インストーラファイルを実行して以下の画面のように設定を進める。

![nodejsinstall01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224453/0f21430b-7fc7-9787-6961-a3010c045af9.png)

![nodejsinstall02.png](https://qiita-image-store.s3.ap-

元記事を表示

GitHub ActionsでJestを自動実行しよう!Cacheを使ったパッケージのインストールの高速化も解説

## 前提
– GitHub Actionsの基本的な用語についてある程度理解している
– NodeJSを使用
– パッケージマネージャーはnpmを使用
– Jestを使用

## 必要なファイル一覧
以下のファイルを編集していきます
“`
❯ tree
.
└── .github
└── workflows
└── test.yml
“`

## ワークフローの作成
.github/workflows/test.ymlにテストの自動実行までの処理を記載していきます
“`yml:.github/workflows/test.yml
# アクション名
name: Jest

# タイミングを指定
on:
pull_request:
types: [opened, reopened, synchronize, ready_for_review]
branches-ignore:
– “release/**”
– “doc/**”

jobs:
Test:
name: Run test codes

元記事を表示

ElasticBeanstalk の環境を Node.js12 から 16 にアップデートする際の躓きポイント

# はじめに
フルカイテンではフロントの WEB サーバ構築に ElasticBeanstalk を使用しており、Node.js 12 系で開発を行っていました。
しかし ElasticBeanstalk の Node.js12 プラットフォームは2023/02/01 時点で既に EOL を迎え、 リタイア状態となっています。
環境を複製できなかったり、セキュリティ面でのサポートも切れているため、早期に開発環境の Node.js バージョンアップと EB の Node16 プラットフォームを使用した新しい環境を作成する必要がありました。
実際に作業を行うと色々と躓いたポイントがあったため、本記事ではその具体的な内容と解決策を紹介します。

# 本記事の対象読者
– ElasticBeanstalk(Node.js@12 Platform) で WEB サーバを構築している
– Node.js のバージョンを12系から16系にアップデートする予定がある

# バージョンアップ時の躓きポイント
## (1) 環境のクローンができない
Beanstalk のプラットフォームのブランチアップデ

元記事を表示

Node http-serverの使い方

## パッケージインスコ(グローバルインストール)

“`
npm i -g http-server
“`

サーバー起動(事前にhtmlファイルを設置してください。)
“`
http-server .
“`

ポート指定
“`
http-server . -p 8080
“`

## パッケージページ
https://www.npmjs.com/package/http-server

元記事を表示

OTHERカテゴリの最新記事