Node.js関連のことを調べてみた2022年09月06日

Node.js関連のことを調べてみた2022年09月06日
目次

node.js child_process spawn を async queueで順番待ちさせる方法

1. node.jsで
2. 時間のかかるローカル処理。。例えばStable Diffustionとか・・重々しいバッチ処理とかをchild_processで処理しているが、
2. ローカルの処理はspawnで非同期にしているので
3. これをasync queueで待ち行列にしたい。

## やりかた

“`javascript
const { spawn } = require(‘node:child_process’)
const async = require(‘async’)

const heavyTask = (data) => {
return new Promise((resolve) => {
// なんかでかくて重い処理、例えばrm -rf / など。
const result = spawn(‘very_heavy_task.sh’, [])
// 処理が終わった時に呼ばれる
result.on(‘close’, (code) => {
resolve()
}
}
}

const workQue

元記事を表示

“Pug”って何!?

# 初めに
本記事は、.NET系(WPF, WinForm, .NET Coreなどなど)を主に経験してきた私が、
Web系会社に転職して、学んだことを自分のメモとして残していくものです。

そんな私が、”Pugって何!?”なレベルからスタートして、実践してみたメモです。
⭐️ 超初心者向けな記事です、至らぬ点ありましたら、世の中の諸先輩方、忌憚のないご意見お待ちしてます! ⭐️

# 概要
[Pug](https://www.npmjs.com/package/pug)とは、「HTMLを書くためのテンプレートエンジン」のことです。
.NETでいえば、「[Razor](https://docs.microsoft.com/ja-jp/aspnet/core/mvc/views/razor?view=aspnetcore-6.0)」、Java(のSpringFW)でいえば、「[Thymeleaf](https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf_ja.html)」のようなものでしょうか。

よく上記を経験してきましたが

元記事を表示

Notion APIでページの中身を取得してみるメモ #notion

前回書いたNotion APIアクセスメモの続きです。

https://qiita.com/n0bisuke/items/b0cf0c416aa8e46bdb1b

ページから情報を一括で取得できると嬉しかったのですが、ぱっと調べた感じだとそれっぽいものがなく、ページも一つのブロックとして捉えて、ブロックの中の要素を取得するみたいなやり方になるっぽい雰囲気でした。

## ページID(BlockID)

ページIDといいつつブロックIDになるみたいです。

`https://www.notion.so/xxxxxxxxxxxxxxxxxxxxx`というURLの場合は最後のスラッシュ以下がページIDに

`https://www.notion.so/API-xxxxxxxxxxxxxxxxxx`などアルファベットがURLに入ってる場合はハイフン以下がページIDになっている模様でした。

こんな感じでページタイトルに英数字が入ってるとその英数字がURLに反映される仕様っぽいですね。

> ![スクリーンショット 2022-09-05 19.56.34.png](https://qii

元記事を表示

VS Remote-Containers を使用した簡単な Astro 環境

VS リモート コンテナーを使用してさまざまな言語をテストし始めましたが、これが Astro.build の新しい開発環境をセットアップする簡単な方法であることがわかりました。

### ステップ 1 – フォルダーを作成する
“`
mkdir astrodev

cd astrodev
“`
`astrodev` フォルダーの中で、`.devcontainer` という名前の新しいサブフォルダーを作成します。

「Dockerfile」を作成します.
“`dockerfile
FROM node:16-alpine

WORKDIR /app

RUN apk update && \
apk add git && \
apk add openssh

ENV HOST 0.0.0.0
EXPOSE 3000

“`
devcontainer.json」という名前の新しいファイルを作成します
“`json
{
“name”:”astro”,
“build”: { “dockerfile”: “Dockerfile” },
“forwardP

元記事を表示

parcelでライブラリをbuildするときにnode_modulesが含まれずError: Cannot find module…と表示される問題の解決法

# Parcelでライブラリをビルドする

## 最近のtypescript
だいたいビルドはparcelに任せてます。webpackの設定が面倒くさいので。まあ一度環境をつくってしまえばなんとかなるんですけど。

## parcelでライブラリモードでbuildするとnode_modulesが含まれない
ので、tsファイルをビルドして、他のディレクトリに移動してからnodeで起動しようとするとmoduleが見つかりませんというエラーが出る。例としてrambdaを入れてビルドした場合。
“`sh
Error: Cannot find module ‘rambda’
“`

## ライブラリモードはnode_modulesが基本的には含まれないのだ
> Determines whether to bundle node_modules or treat them as external. The default is true for browser targets, and false for library targets. Possible values are:

簡単に訳す

元記事を表示

REST APIって何?

# 結論
#### REST APIとは
RESTのルールに従ったAPIのことです。

# そもそもRESTとは何か
webサービス設計思想の1つ
Twiiterなどのアプリを作るときにどういう手段で作っていくかを考える思想の1つ

# REST4大設計のルール
※RESTは4つ以上ありますが今回は一般的な4つを解説します。
このルールを満たしたサービスがRESTfullと言われています。

#### 1.アドレス可能性(Addressability)
#### 2.統一インターフェース(Uniform Interface)
#### 3.ステートレス性(Stateless)
#### 4.接続性(Connectability)

## 1.アドレス可能性(Addressability)
クライアントが送ったURL(アドレス)をサーバーが理解しそれをクライアント返していること。

例:
ユーザーがQiitaのマイページのボタンを押したときにクライアント側からユーザーがマイページが見たいですといった情報がサーバーに送られる。
そしてサーバーが分かりましたとマイページの画面がクライアント

元記事を表示

Nodejsのバージョンを上げたら`error:0308010C:digital envelope routines::unsupported`が出てしまう

# はじめに
最近はRailsしか触っていない筆者です。
本業の大きなプロジェクトが落ち着き、ほっとしております:smile:

さて今回は、Nodejsのバージョンを上げることで、Gatsbyのプロジェクトが`error:0308010C:digital envelope routines::unsupported`で怒られてしまったので、その暫定対応について記載します。

とりあえず、動かした方はこちらが参考になれば幸いです。

# 前提
– Nodejsのバージョン: 18.7.0
– npmのバージョン: 8.15.0

# 結論
`openssl-legacy-provider`オプションを使用する。

私は、package.jsonを編集し、以下のようにしました。

“`diff
“scripts”: {
– “develop”: “gatsby develop”,
+ “develop”: “NODE_OPTIONS=’–openssl-legacy-provider’ gatsby develop”,
}
“`

原因は、Nodejsnのバージ

元記事を表示

IBM Cloud Code Engine に React + Express アプリケーションをデプロイしてみる

# はじめに

前回の記事でIBM Cloud Code EngineにPlay Framework/Scalaアプリケーションをデプロイする方法を紹介しましたが、今回は同様のプロセスをNode.jsベースのアプリケーションでも行なってみます。このNode.jsアプリケーションはフロントエンドにReactを用い、バックエンドにはExpressを使ってサーバーを構築します。プロダクションへのデプロイ時にはバックエンドのExpressサーバーが両方ともホストすることになります。(ネット上にこの構成でクラウド環境へのデプロイまでカバーしている記事があまり多くはなかったので記述しておくという意味合いもあります。)

# Expressサーバーの構築

Expressサーバーを構築するのに`express-generator`を使用します。

“`shell
$ npm i -g express-generator
“`

早速Expressサーバーの雛形を作成します。

“`shell
$ express react-express
“`

最終的にフロントエンドはReactで書くこと

元記事を表示

Node.js環境構築

# Node.jsって言語なの?
Node.jsは言語ではなくJavaScriptを使ったサーバサイドの設計手法のようなもの

# 使うメリット
Node.jsはJavaScriptを学ぶだけでクライアントとサーバーも作ることができることができる。
非同期処理が得意なのでラインやチャットなどのリアルタイムアプリに向いている。

# Node.jsの環境構築
ここからNode.jsの環境構築をまとめます。

### nodeインストール
まずは公式ホームページからNode.jsをインストールしましょう。
[Node.js公式](https://nodejs.org/ja/)
nodebrewを使ったやり方の方が望ましいですが今回は公式ページからダウンロードします。

![スクリーンショット 2022-09-03 11.20.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577311/e80e9e93-c27d-1e84-082d-a0eec149dd79.png)

### npmを使ってモジュール

元記事を表示

Firebase CloudFunctionsでデプロイしても反映されないなと思った時に確認すること

Firebase CloudFunctionsを使っていて
`firebase deploy`とか`firebase deploy –only functions`とかをしてデプロイがちゃんとできているはずなのに,なぜか古い関数のままで実行されていて,変更した新しいコードが反映されないなーと思ったときに確認したい内容.

### 1. そもそもターゲットのプロジェクトはあってますか
開発環境と本番環境で切り分けてる人は切替え忘れてるかもね.
`firebase use`で確認できます

### 2. ちゃんとビルドしてますか
デプロイする前に`npm run build`されるようになっていますか?
デフォルト状態だと`firebase.json`で`predeploy`として定義してくれてるけど,何かの拍子に変えてしまったりしてないかな

### 3. エントリーポイントのパスが変わってませんか
`package.json`をみてください.
デフォルトだと
“`json


“main”: “lib/index.js”,


“`
になっていると思うけ

元記事を表示

protocでprotobufをコンパイルして生成されるコードを利用して、Node.jsでgRPC通信をやってみた

## 以下の記事を参照して頂ければと思います

https://note.com/shift_tech/n/nb9cc5208c70c

**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です。**

## 補足
ソースコード全体は以下。

https://github.com/yuta-katayama-23/node-grpc/commit/b083ceeca6d20cff33249c0dd6959e48dbaf264f

元記事を表示

Node.js+Expressのサービスをrender.comでデプロイしようとしたらちょっとハマった話

# はじめに
私は,文化祭に向けて音ゲーを作っており,ゲーム本編は動作したのであとはデプロイして展示するだけだったのだが…
事件は起こる。そうだ,**Heroku無料枠廃止**である。今すぐにというわけでは無いものの,文化祭終了後にオープンベータとして一般公開することを考えていたので,とりあえず無料枠が使えそうなPaaSを…と探していたら見つけたのが,そう,[render](https://render.com)である。

# とりまデプロイ
### 某日深夜2時
これで出展できるぞ~!あとはデプロイだけや!
まずプルリク立ててmasterブランチにマージしとこ…
んじゃデプロイするか…
### 1時間後…
あー何回やってもデプロイできひんやんけ!どうなっとるんや!
(renderに関する情報を探すも,Node.js+Expressに関する日本語情報は少ない。かと言って深夜三時。英語読む気になれへん)
取り敢えず寝よ…今日劇のリハあんねんな…

### 前日
リハ終わったし展示のセッティングするか…それにしても暑いな…
おっと,その前にもう一回試すか

元記事を表示

異なるバージョンのNode.jsを同居させて切り替えて使う

昔のプログラムをサクッと確認したいだけなのに、Node.jsのバージョンが合わずにビルドでエラーを吐いてストレス。。。
という状況に陥ったため、
Node.jsのバージョン管理であるnvmをインストールして利用しました。

**試した環境**
OS: Windows 11

## 通常の方法での最新のNode.jsのインストール
Node.jsのダウンロードページから、Windows用のインストーラー(.msi)が配布されているので、
それを取得し、インストールを行う。
https://nodejs.org/ja/download/

### Node.jsが正常にインストールされたかの確認
Windows PowerShellを起動し、以下のコマンドを実行しバージョン情報が表示されれば、成功です。
“`console
PS C:\shell> node -v
v16.17.0
“`

## nvmのインストール
こちらも、インストーラー(.exe)が配布されているので、取得しインストールを行う。
https://github.com/coreybutler/nvm-windows

元記事を表示

libSquooshを使って画像一括変換

## これ、Webpackである必要なくない?

以前、

https://qiita.com/bananacoffee/items/8c610dc59d34a85ec010

という記事でwebpackを用いて画像変換を行うプログラムを作成したが、

- 画像変換をするだけなのにwebpackさんに出張ってもらう必要なくない?
- ImageMinimizerを経由するため変換効率が悪い

という考えと問題に至り、Node.js + libSquooshだけで変換を行えるようにしてみた。

### 利用パッケージ

“`sh
npm install –save-dev @squoosh/lib glob path fs-extra commander
“`

### 変換プログラム(convertImage.mjs)
“`js
/**
* 画像一括変換スクリプト
* 参考: https://github.com/GoogleChromeLabs/squoosh/tree/dev/libsquoosh
*
* 実行(例)
* node convertImage.mjs

元記事を表示

Deta.shの無料枠が廃止になったらCyclic.shへ移行する

# HerokuのFree Planが終了するらしい(泣)(泣)
https://blog.heroku.com/next-chapter
> Starting November 28, 2022, we plan to stop offering free product plans and plan to start shutting down free dynos and data services. We will be sending out a series of email communications to affected users.

2022/11/28までに有料版にアップグレードしてねとのことらしい。

# Cyclic.sh
⇒ [Deta.sh](https://www.deta.sh/) ⇒ [Cyclic.sh](https://www.cyclic.sh/)へ移行した

https://www.cyclic.sh/

[Cyclic.sh](https://www.cyclic.sh/)は無料で使えるクラウドプラットフォーム。
クレジットカード・電話

元記事を表示

Node.jsでCLIの引数を解析する方法、node:util.parseArgsのご紹介も!

はいさい!ちゅらデータぬオースティンやいびーん!

# 概要

CLIで実行するNode.jsのアプリケーションを実行する時に、CLIからアプリケーションに引数を渡して、そしてその渡された引数をアプリケーションで解析する方法を紹介します。

## 必要な知識

この記事を理解するためには、Node.jsを使ってCLIでJavaScriptを実行する知識が必要です。

https://nodejs.dev/en/learn/run-nodejs-scripts-from-the-command-line

## 参考になった記事

https://2ality.com/2022/08/node-util-parseargs.html#more-ways-of-using-long-and-short-options

# `process.argv`を使い、Node.jsアプリケーションでCLI引数を読む

Node.jsのアプリケーションには、`process`のグローバル変数があり、この変数には、環境変数を始めとして、さまざまな便利な情報にアクセスすることができます。

今回、CLI

元記事を表示

Error: listen EADDRINUSEの対処方法

##### Error: listen EADDRINUSEの対処方法

“`bash
# 開いているポート(PORT)のプロセスID(PID)を取得する。
lsof -i tcp:PORT
# 取得したプロセスID(PID)のプロセスを終了する。
kill -15 PID # うまくいかなければ kill -9 PID を実行する。
# 開いていたポート(PORT)のプロセスID(PID)がなくなっていることを確認する。
lsof -i tcp:PORT
“`

参考: [How to fix Error: listen EADDRINUSE while using NodeJS?](https://stackoverflow.com/questions/9898372/how-to-fix-error-listen-eaddrinuse-while-using-nodejs
)

元記事を表示

Socket.IOサーバーと、UnityのWebSocketライブラリとでやりとり

## はじめに

UnityでSocket.IOとの通信で、UnityのC#のバージョンを変えなきゃいけなかったりして、結構詰まってしまったので、そこらへん変えたくないよって時のメモです

ちなみに前回の記事の続きのような感じで書いてます

https://qiita.com/ono-honeycomb/items/359a254fd4c859692472

前提として、インターネットが使える状況ならばクラウドサービス使ったほうが楽だったりします

### 追記

https://github.com/Rocher0724/socket.io-unity

こちらを使うためにSocket.IOのバージョンを `1.7.4` まで落とすと動作します(Known Bug項目に書いてあります)

### 環境と使うもの

* Unity 2021.3.6f1
* .NET Standard2.1
* websocket-sharp
* Node.js v16.15.1
* Socket.IO v4.5.1
* express v4.18.1

## Sock

元記事を表示

Node.js で AWS Elemental Media Convert を使って動画変換してみた

## 目的
ユーザがiPhone で撮った動画をweb上で再生できるように、mp4フォーマットに変換してみました。

## システム構成
![Untitled Diagram.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821499/6ce38bee-3e5e-843b-7b92-7429ad5b45bf.jpeg)

## 構築手順
1. S3 bucket `s3-media-convert` を作成します。(ユーザの動画は S3 の Presigned URL などを使ってこの bucket にアップロードさせます。)
2. node.js の lambda `trigger-media-convert` を作成します。
3. `trigger-media-convert` lambda に トリガーを追加します。
![Screen Shot 2022-08-31 at 16.44.02.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

【AWS IAM認可】署名バージョン4で署名する処理手順 for Nodejs

# 前提
– Cognitoが設定済みであること
– API GatewayでAWS IAM認可が設定済みであること
– ログインユーザーのロール(API実行可否)が設定済みであること
– xxxのところは自環境に合わせて設定すること

## 下記をインストールする
– @aws-amplify/ui-vue
– aws-amplify
– axios
– vue

## 署名のサンプルソース
“` vue:App.vue