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

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

node(ts)でlambdaを非同期で起動

# はじめに
@aws-sdk/client-lambdaを使った具体例があまり見つからなかったので、自分の再利用時用に簡単な例をという感じでの記事です。

※ローカル実行したサンプルです。

# 環境
– node:v16 (ts)
– @aws-sdk/client-lambda
– LambdaClient
– InvokeCommand
– InvokeCommandInput

“` yarn add @aws-sdk/client-lambda“`

# 実行権限 (未検証)
※ローカルで試したので検証していないですが、AWS上で実行する場合は、実行元に下記のようなロールが必要なはず。
“`
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “PermissionToInvoke”,
“Effect”: “Allow”,
“Action”: “lambda:InvokeFunction”,
“Resource”: “arn:aws

元記事を表示

【TypeScript】EventEmitterを継承してクラスを作る

typescriptにおいてEventEmitterを継承したクラスを作成します。

## EventEmitterとは?

Node.jsの標準モジュールの一つ、Eventsから読み込めるクラス。イベントリスナー(イベント実行時に動く関数)の登録を行い、イベントの実行をトリガーとして登録した処理を実行することができる。

## EventEmitterを使ってみよう

EventEmitterをimportし、インスタンスを作成します。

“`typescript
import { EventEmitter } from “events”;
const emitter = new EventEmitter();
“`

イベントリスナーの登録処理は“`eventEmitter.on“`もしくは“`eventEmitter.addListener“`で行います。ちなみにこの二つは[同じものだそうです](https://github.com/nodejs/node-v0.x-archive/blob/master/lib/events.js#L188)。

“`typesc

元記事を表示

【Electron】メモ

## メモ
WEB技術でデスクトップアプリケーションを開発できるFWのElectronについて、メモしました。

## 目次
– IPC通信について:メインプロセスとレンダラプロセス
– IPC通信とは何か?
– `main.js`の説明
– `ipcMain.handle()メソッド`
– `renderer.js`の説明
– `ipcRenderer.invoke()メソッド`
– `preload.js`の説明
– アプリケーションの実行方法

## IPC通信とは何か?

### メインプロセス側: `main.js`
`ipcMain.handle()`メソッドを使用します。

`ipcMain`モジュールはメインプロセスで、レンダラプロセスから送信されるメッセージを受信して処理します。
基本的にメインプロセスは受け身で受信したら送信元のレンダラプロセスに対して返信するみたいな動きになります。

### レンダラプロセス側: `renderer.js`
`ipcRender.invoke()`メソッドを使用します。
メインプロセスに対して、同期、非同

元記事を表示

Node.jsのsokect.ioを使ってのPUSH通知を作ってみた

こんにちは、wattak です。

50の手習いで Web アプリを作ってみよう、と色々と調べておりまして、自分の備忘録もかねて作ってみた実装をこちらに投稿しようと思います。
## 今回のプログラム
任意のタイミングでサーバーからクライアントへ PUSH する仕組みを持つ環境を Node.js を使って構築してみました。

なお PUSH の仕組みは記事のタグにも記載しましたが socket.io の仕組みを使っております。
## 処理概要
以下のようなイメージで構築しようと考えております。

1.クライアントから接続要求
2.サーバーにてクライアント情報を追加
3.クライアントから受付要求
4.サーバーにて登録処理して応答
5.以後、任意のタイミングでサーバーからクライアントへ PUSH 通知

「任意のタイミング」については PUSH 用に RestAPI を用意し API コールのタイミングで通知を行うことにしました。
## 処理イメージ
ポンチ画レベルのシーケンスで恐縮ですが1.~5.の処理イメージを描いてみました。
![qiita_image.jpeg](https://qi

元記事を表示

Reactnative/Expoでレシート印刷の receiptline を使ってみた

 今回はNode.js用にOFSC(一般社団法人オープン・フードサービス・システム・コンソーシアム)で開発されたレシート記述言語 ReceiptLineをReactnative/Expoで使えるようにしてみた方法の紹介です。
 発端は下記の記事で面白いなと感じた事で、その後色々調べてみると最近iPad等のタブレットを利用した各種POSレジソフトが普及しつつあるので、スマホやタブレット用のレシート印刷アプリのニーズが在りそうに思ったことと、結構POSレジソフトはプリンターの対応機種を限定しており、AppleのAirPrint対応機種も最近増えてますが古いプリンターは対応できない等の問題が有りそうなこと等です。
[ リンク:Qiita 簡単レシート印刷 receiptlineと20行のJavaScriptでレジプリンターをインスタントカメラにしてみた](https://qiita.com/dopperi46/items/1d2b92ba6a4cb6f79c19)
 この記事の主な内容はこんな感じです。
1.レシート記述言語receiptlineとは何?
2.node.js用のモジュールを

元記事を表示

M1 macbookでnodebrew installできないとき

## いつも忘れること
– M1 macbookに変えてから、npm使っているとたまに下記サイトのようなエラーに出会う。

https://zenn.dev/catnose99/scraps/6c9e7ebabb6221

– それ自体は、Node.jsのバージョンを変えると動くという話なので、nodebrewでバージョンを変えれば良い
– しかし、目的のNode.jsをインストールしようしてできない、ということをいつも繰り返している

## 結局こちらにお世話になる

https://zenn.dev/naoki_oshiumi/articles/967ce342172ab8

– ということで備忘録。
– M1 macbookにして、 `nodebrew install v15.8.0` みたいなことができない時は `nodebrew compile v15.8.0` みたいな感じにすると環境に必要なバージョンのNode.jsを作ることができる。
– このコンパイルは記事にもある通り1時間くらいかかると思う(M1頑張ってくれ)
– あとは `nodebrew use v15

元記事を表示

Next.jsで配列内のJSONデータで必要な部分のみ出力したい

## はじめに
もっと良い方法があるかもしれないですが、調べた中で上手くいったコードをメモがてら記載

## コード

“`index.js
const [qiita, setQiita] = useState(”);
const fetchQiita = async () => {
// データを取得
const response = await fetch(`/api/qiita?query=${keyword}`);
let qiita = await response.json();
 // 配列を1つ出力して別の変数に格納
const listQiita = qiita.map(article =>
<>

  • {article.title}
  • {article.body}

  • );
     // useStateの変数にセットする
    setQii

    元記事を表示

    【超簡単】Next.jsでBasic認証を導入してみた

    ## はじめに
    Next.jsでBasic認証を導入しようと思いましたが、TypeScriptで記載されたサンプルしか見つけられなかったため、JavaScript版を作成しました。

    ## Next.jsでBasic認証を導入する方法

    以下を`pages`フォルダ配下に作成する

    “`/pages/_middleware.js
    import { NextRequest, NextResponse } from ‘next/server’

    export function middleware(req) {
    const basicAuth = req.headers.get(‘authorization’)

    if (basicAuth) {
    const auth = basicAuth.split(‘ ‘)[1]
    const [user, pwd] = Buffer.from(auth, ‘base64’).toString().split(‘:’)
    if (user === process.env.NEXT_PUBLI

    元記事を表示

    Next.jsでError: EPERM: operation not permitted発生時の対処法

    ## 操作内容

    “`bash
    npm run build
    “`

    “`package.json
    {
    “private”: true,
    “scripts”: {
    “dev”: “next dev”,
    “build”: “next build”,
    “start”: “next start”
    },
    “dependencies”: {
    “buffer”: “^6.0.3”,
    “next”: “latest”,
    “react”: “17.0.2”,
    “react-dom”: “17.0.2”
    }
    }
    “`

    ## エラー内容
    “`bash
    Error: EPERM: operation not permitted,
    “`

    ## 原因
    以下コマンドでローカルでサーバを起動していたため

    “`
    npm run dev
    “`

    ## 対処法
    ローカルサーバを止めて、再度以下を実行する
    “`bash
    npm run build
    “`

    元記事を表示

    Node.js Express + React の Proxy 設定について

    # この記事について
    Node.js Express をキャッチアップし、アウトプットしようと簡単なWebアプリを作成したとき、Proxyの設定に少々つまづいたので備忘録。

    # やりたいこと
    – Github APIを利用し、Githubのクローンを作成したい(ユーザー情報閲覧、フォロー、フォロワー、リポジトリ、ユーザー検索機能のみ)。
    – ServerサイドでAPIを作成(Node.js Express)。
    – ClientサイドはReactで作成。

    # バージョン
    “`
    $ node -v
    v14.17.0

    $ npm -v
    6.14.13

    express: 4.18.1
    react: 18.1.0
    “`

    # 想定
    – React project ・・・`http://localhost:3000`
    – Express project ・・・`http://localhost:5000`

    ユーザーは`http://localhost:3000`にアクセスすることでReactによって描画されたブラウザを閲覧できる。
    アプリケーション内でGithubユーザーの検索や、フ

    元記事を表示

    【初心者】npmという名のバージョン管理ツールとは

    ## 目的

    npmとかnodebrewとかNode.js使うと色んなコマンドが出てくるが
    npmっていったい何者なのかとなったので調べた。
    ちなみに環境はmac。

    ## npm

    node package managerの略。
    Node.jsのパッケージのバージョンを管理するシステムのこと。

    Node.jsにはたくさんのパッケージ(便利な機能がまとまったもの)が存在し
    それを一つ一つインストールするのは大変なので、コマンドでインストールできるようにしてやるぜ、的なもの。

    npmはNode.jsをインストールすると一緒にインストールされる。
    ちなみにnpm以外にもNode.jsのパッケージバージョン管理システムは存在する。

    yarnもその一種。

    ## では一体、nodebrewは?

    nodebrewはNode.js(言語)自体のバージョン管理ツール。
    Node.jsのバージョンを上げたりできる。

    nodebrew以外にも以下のようなNode.jsのバージョン管理ツールが存在する。

    * n
    * nvm
    * nodist

    nodebrewを使うにはmacにあるhome

    元記事を表示

    【公式ハンズオン】Node.js+PrismaをServerless Frameworkを使用してAWS Lambdaにデプロイする

    :::note
    この記事は、Prisma公式の「Deploying to AWS Lambda」の和訳(意訳)です。
    翻訳元とライセンスについてはページ下部に記載しています。
    :::

    このハンズオンでは、Serverless Frameworkを使用して、AWS LambdaにサーバレスなNode.jsのREST APIをデプロイする方法をお伝えします。

    AWS LambdaはAWSのサービスの一つで、これを使うとサーバ管理不要のサーバレス環境でコードを実行できます。一方で、REST APIをLambdaにデプロイするためには、S3でファイルをホスティングしたり、API GatewayでAPIをHTTPで公開する必要もあります。

    Serverless Frameworkを使えば、CLIでワークフローを自動化し、AWSリソースのプロビジョニングも行うことができます。

    今回作成するREST APIでは、Prisma Clientを使用してデータベースのレコードの取得・作成・削除を行います。具体的には、それぞれの関数はRESTリソースのエンドポイントを表し、Prisma Client

    元記事を表示

    Error: listen EADDRINUSE: address already in use :::3000 の対処

    ## 以下のエラーの対処方法について。

    “`shell
    Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (node:net:1334:16)
    at listenInCluster (node:net:1382:12)
    at Server.listen (node:net:1469:7)

    “`

    localhost:3000 のaddress が使用済みということなので該当プロセスを終了すれば良い。

    ### 該当プロセスの調査
    “`
    # nodeで稼働中のプロセスを調査
    ps aux | grep node

    # port3000を利用してるプロセスの調査
    lsof -i :3000
    “`

    後者の`lsof -i :3000`の方が確実。

    ### 該当のプロセスIDを指定してkill

    “`shell
    kill -9 [該当のPID]
    “`

    -9 は強制終了命令(killシグナル)を送る

    元記事を表示

    MacにNodeをインストール、バージョンを切り替える方法とNodeのバージョンについて

    Macにnodeをインストール、バージョンを切り替える方法について備忘録としてまとめます。

    ## 実行環境:

    Mac OS ver.12.1
    M1チップ

    ## インストール方法

    nodebrew を使用してインストールします。
    homebrew を利用するため、インストールしてない場合は[こちら](https://brew.sh/index_ja “Homebrew”)からインストール。

    ### nodebrew のインストール
    “`shell
    brew install nodebrew
    “`

    ### nodeのインストール

    #### 最新版のnodeのインストール
    LTS versionのインストール。
    “`shell
    nodebrew install-binary latest
    “`

    #### 安定版のインストール
    (2022/05時点ではv18.1.0)
    “`shell
    nodebrew install-binary stable
    “`

    #### 現在提供されているバージョンの確認
    “`shell
    nodebrew ls-remote

    元記事を表示

    Docker-compose3でnode.js&mongodb&nginxの環境を整える

    # はじめに
     これはある記事を参考にnode.jsとmongodbとnginxのDocker環境をcomposeでめっちゃお手軽に作ったろ、とか思ったらエラーしたため案外悪戦苦闘してしまった人のお話です。
     そのため、ほとんど内容は書かず、下に貼ってあるサイトに丸投げします。
     ただ一点、エラーの発生する場所だけ書きますのであらかじめご理解を。

    (この記事を書いてるEchizenって人なんですが、一応何かしら言っといたほうがいいのかしらん?)

    [参考]

    https://zenn.dev/cizneeh/articles/nginx-node-mongo-docker-example#docker-compose.yml
    # 環境
    **22/05/21**
    ・CentOS7
    ・Docker 1.13.1
    ・Docker-compose 1.18.0
    # docker-compose.yml
     参考のサイトを進めていけば適当なディレクトリ構成でnode.jsとmongodbとnginxが使える環境が作れるはずなのですが、最後の最後に書かれているdocker-compose.ymlは

    元記事を表示

    Node.js x LINE Messaging APIで複数メッセージを1度に送ってみた

    ## はじめに
    LINEの公式ドキュメントでは単一メッセージを送るサンプルコードしか記載がなかったため、複数メッセージを特定ユーザに送ることは可能かを検証してみました。

    ## 方法

    “`bash
    $ npm install @line/bot-sdk
    “`

    “`test.js
    const line = require(‘@line/bot-sdk’);

    const client = new line.Client({
    channelAccessToken: ‘
    });

    const message = [
    {
    “type”:”text”,
    “text”:”Hello, world1″
    },
    {
    “type”:”text”,
    “text”:”Hello, world2″
    }
    ];

    client.pushMessage(‘‘, message)
    .then(() => {
    console.log(‘Success’);

    元記事を表示

    AWS EC2でCyberChefを動かす

    # はじめに

    ## AWS EC2とは

    数分でクラウド上に仮想マシンを立てることができるサービス。

    [Amazon EC2(安全でスケーラブルなクラウド上の仮想サーバー)| AWS](https://aws.amazon.com/jp/ec2/)

    ## CyberChefとは

    ブラウザ上でデータに対する様々な操作ができるアプリケーション。

    [CyberChef](https://gchq.github.io/CyberChef/)

    # AWS EC2でCyberChefを動かす

    ## EC2インスタンスを起動する

    今回は以下の設定でEC2インスタンスを起動します。
    詳しいやり方はここでは省略するので、必要に応じて各自調べてください。

    * 名前
    * 適宜設定する (例えば `CyberChef`)
    * アプリケーションおよびOSイメージ
    * Amazon マシンイメージ (AMI):Ubuntu Server 22.04 LTS (HVM), SSD Volume Type
    * アーキテクチャ:64 ビット (x86)
    * インスタンスタイプ
    * **

    元記事を表示

    brew upgrade voltaしたら、nodeにPATHが通らなくなった時の解決法

    # 環境

    – macOS 12.3.1
    – Homebrew 3.4.11
    – Volta 1.0.5 -> 1.0.7

    # Volta

    Voltaはクロスプラットフォームで使えるNodeとnpmのバージョン管理ツールです。かなり高速で、使い勝手も良いので、未導入の方は是非。

    https://docs.volta.sh/guide/

    # upgrade

    voltaを最新にアップグレード

    “`terminal
    $ brew upgrade volta
    “`

    # command not found: node

    nodeはおろかnpmも。焦る。

    “`terminal
    $ node -v
    zsh: command not found: node

    $ npm -v
    zsh: command not found: npm
    “`

    けど、voltaだけはPATHが通っている状態

    “`terminal
    $ volta -v
    1.0.7
    “`

    # 解決策

    voltaをsetupすれば直りました。
    もしかしたらupgradeした時にターミナルに出力されてたのかも。

    元記事を表示

    Node.js で osm-pbf-parser を使うときのメモ

    # はじめに

    Node.js で OpenStreetMap の PBF をパースするときに [osm-pbf-parser](https://www.npmjs.com/package/osm-pbf-parser) を使うことが多いのですが、example の書き方が 2015年当時のものでちょっと扱いに困ることがあるので、2022年ならこう書くかな?というものを記録しておきます。

    # Before (official example)

    “`js
    var fs = require(‘fs’);
    var through = require(‘through2’);
    var parseOSM = require(‘osm-pbf-parser’);

    var osm = parseOSM();
    fs.createReadStream(process.argv[2])
    .pipe(osm)
    .pipe(through.obj(function (items, enc, next) {
    items.forEach(function (item)

    元記事を表示

    M1 MacにNode.jsをインストールする方法と使い方(Node.jsバージョン管理)

    ## はじめに
    nodenvを使うと、Node.jsのバージョン管理がしやすくなります。つまり、プロジェクト毎にNodeのバージョンを指定して実行ができます。

    今回はM1 MACにHomebrewを使ったnodenvのインストール方法と使い方をこの記事でまとめていきたいと思います。

    ## 環境
    ・macOS Big Sur 11.4

    ## 1.Homebrewをインストール
    [Homebrew](https://brew.sh/index_ja)をインストールしていない場合は、先にHomebrewをインストールします。
    “`
    $ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
    “`

    ## 2.nodenvをインストール
    nodenvをインストールします。
    “`
    $ brew install nodenv
    “`

    ## 3.nodenv にパスを通す
    自分は以下の記述がなかったため上手くバージョン管理ができなかったです。
    “`

    元記事を表示

    OTHERカテゴリの最新記事