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

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

【公式ハンズオン和訳】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 にパスを通す
自分は以下の記述がなかったため上手くバージョン管理ができなかったです。
“`

元記事を表示

nvmのインストールの仕方と入門的な使い方のまとめ【Mac】

今までフロントをがっつりやってこなかったのすが、最近reactをよく触るようになったり、Udemyを受けたりしてて、講座によってnodeのバージョンが違ったりしてときおり不安になることがあるので自分の端末でもnvmを導入することにしました。

タイトルにはMacと書いてますが、おそらくどのOSでもいけると思います。

## nvmのインストール

### bashの場合

“`bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
“`

### zshの場合

“`zsh
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | zsh
“`

でいけます。

もしすでにnodeがインストールされている場合は、

“`
brew uninstall node
“`

でアンインストールしましょう。(nodeが入ってしまっているとnvmがインストールできないという噂を聞

元記事を表示

?静的HTMLファイルをNode.jsで立ち上げたサーバーを使ってLocalhostに表示させる!

Progateを使ってWeb製作をし始めてから2週間。ある程度知識が集まってきたので、ほぼ同じでもいいから自分で何か作ってみようと始めた矢先…。

エクスプローラに置いている静的HTMLファイルを、Node.jsを使って立ち上げたサーバーで表示したい。サーバーを立ち上げるコードなどは知っていたが、Progateと同じコードでやってもできない。

結局解決したが、気を付けなければいけないことがあったので、自分の勉強の証として残しておきます。

# 結論:パスが違った
ファイルの階層はこんな感じ

“`
MyIntroduction
├── public
│ ├── img
│ │ └──background.png
│ └── css
│ └──stylesheet.css
├── view
│ └── index.html
├── app.js
└── package.json
“`

下記のapp.jsはExpressを使ってルーティングをするためのファイルで、改善前です。

“`javascript:app.

元記事を表示

nvm windowsで「Unexpected token ‘.’(ピリオドエラー)」を直した話

nvmはnodejsのバージョン管理ツールで、複数のnodejsやnpmバージョンを使いたい場合にとても便利です。しかしWindows版ではnvmのバージョン1.1.7で以下のようなエラーが生じていました。
[GitHub](https://github.com/npm/cli/issues/4234)でも長期に渡って議論されていたようですね。

“`
$npm init
npm ERR! Unexpected token ‘.’
npm ERR! A complete log of this run can be found in:

元記事を表示

Node.jsからMongoDBにアクセスできない(2022)

Node.jsからMongoDBにアクセスするまでに意外と手間取ってしまった。。
忘れないように記録しておく。

# インストール
ちなみにOSは、Windows 10

* Node.jsをインストーラの指示に従ってインストール(v18.0.0)
* MongoDBをインストーラの指示に従ってインストール(v5.08)
 ⇒インストール時、「Install MongoD as a Service」にチェック
  (MongoDB ServiceサービスがWindowsに登録される)
 ⇒途中「MongoDB Compass」にチェックをつけておく
  (インストール後MongoDB compassが立ち上がる)
 ⇒インストール後、mongoのパスを通しておく

# MongoDBにデータ登録
* コマンドプロンプトを開いて、mongoシェルを起動
~~~:コマンドプロンプト
cmd > mongo
~~~
* データベース:myDBを作成
~~~:コマンドプロンプト
> use myDB
switched to db myDB
~~~
* コレクション:tableを作成
~~~:コ

元記事を表示

終わる順番は気にしないから一気に処理を実行させてその結果を返して!

# はじめに

JavaScrip や TypeScript を触っていると避けて通れないのは「非同期処理」です。
よくネット上で見るものは、非同期処理を同期処理のように順番に実行する方法を記載してくれてるものが多いと思います。

こんな感じ。
“` _.js
async function sample(){
await axios.get(“/api/test1”).then(function (response) {

});
}
“`

もしこの状態でAPIが複数に増えた場合、処理速度はどんどん伸びてしまいます。
“` _.js
async function sample(){
await axios.get(“/api/test1”).then(function (response) {

});

await axios.get(“/api/test2”).then(function (response) {

});


}
“`

そうではなく、「/test1」と「/test2」の終わる順

元記事を表示

[Node.js] Expressサーバーのタイムアウト時間を変更する

# デフォルト

Expressでは、リクエストのタイムアウトデフォルト値が**2分**に設定されています。

# タイムアウト時間を設定

以下のように、オプションとして`timeout`が用意されています。そちらの値をミリ秒で指定することで、タイムアウト時間を変更することができます。

“`app.js
const express = require(“express”)
const app = express()

const appServer = app.listen(80, () => { })
appServer.timeout = 1000 * 60 * 5 // 5min
“`

# 参考

※2022/5/19追記:見れなくなっちゃってますね
[Node.js サーバーのタイムアウトの時間を変更する](http://backham.me/blog/2019/10/24/node-js-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%A2%E3%82

元記事を表示

ESLint でプロジェクト独自のルールを設定する

# はじめに
今となっては Node.js での開発などでは必須となったツール、 [ESLint](https://eslint.org/)。
インポートの順番を特定の順番にしたり未使用の変数に Warning を出したり、プロジェクトに必要なルールを設定することでコードの品質を一定に保つことができるスグれたツールです。
プラグインの機構も備えており、多くの開発者が様々なプラグインを組み合わせてルールを設定していることと思います。

そんな ESLint ですがあらゆるユースケースに対応できるかというと必ずしもそうではなく、中には ESLint でカバーできていないプロジェクト独自のルールがあったりするのではないでしょうか。
この手の独自のルールというのは機械的にチェックすることができないと、レビューの時に余計なやり取りが生じたりプロジェクト新規参画者にとってもどういうルールがあるのかをいちいち読みに行かないといけなかったりとあまりいい状態とは言えません。
そこで今回は、そんな ESLint でカバーできないルールをプラグインを自作することでカバーできるようにしてみようと思います。

元記事を表示

REST API Design Best Practices を用いたAPI開発 #2 (APIのVersion管理)

本記事は[REST API Design Best Practices を用いたAPI開発 #1](https://qiita.com/ryumura/items/9ee28d43ec27edc36e2e)の続きです。

## 動機
[REST API Design Best Practices を用いたAPI開発 #1](https://qiita.com/ryumura/items/9ee28d43ec27edc36e2e)と同様、以下の記事をFollowしながら手を動かすことで、少しでも昨今の流れ・感覚をCatch Upをすること、また自分自身のメモとして残すことを目的として記事に起こす。

https://www.freecodecamp.org/news/rest-api-design-best-practices-build-a-rest-api/

## 本記事で実施すること
* APIのVersion管理
* URLを用いたVersion管理の実装
* サーバの起動とアクセス確認

## 環境
[REST API Design Best Practices を用い

元記事を表示

【M1Mac】nodebrewを使ってNode.jsをインストール(PATH通らなくて悩んでいる人へ)

1. Homebrewをインストールする
1. Homebrewのサイトのインストール欄に書かれているコマンドをコピーしてターミナル上で実行

[Homebrew](https://brew.sh/index_ja)

2. 処理が終わった後に、最後らへんの行に指示が書かれているのでそれに従って実行する
3. Homebrewが正常に使えることを確認

“`bash
% brew -v
% brew doctor
Your system is ready to brew.
“`

2. nodebrewをインストールする
1. Homebrewを使ってインストール

“`bash
% brew install nodebrew
“`

2. PATHを通す
1. 以下の行を`~/.zsh

元記事を表示

REST API Design Best Practices を用いたAPI開発 #1

## 動機
仕事で関わるシステムの大部分が企業の基幹系システムであることが多く、昨今はやりのJavaScriptによる開発手法にCatch Upしきれていないと感じている。
以下の記事をFollowしながら手を動かすことで、少しでも昨今の流れ・感覚をCatch Upをすること、また自分自身のメモとして残すことを目的として記事に起こす。

https://www.freecodecamp.org/news/rest-api-design-best-practices-build-a-rest-api/

## 本記事で実施すること
* API開発に必要な基本的なフォルダ階層の作成
* npmを用いた必要なパッケージインストール
* EntryPointとなるindex.jsの作成
* サーバの起動とアクセス確認

## 環境
* OS
Microsoft Windows 10 Enterprise 10.0.19042 N/A ビルド 19042

* 開発環境
Visual Studio Code 1.64.2

* ターミナル環境
GNU bash, version 4.4.23(1

元記事を表示

パスパラメータ”/:id(\\d)”はどういう意味? Node.js Expressのパスパラメータの設定の色々

## はじめに
Node.jsのExpressでは、以下のようにパスパラメータに正規表現を使う事ができる。

“`js
app.get(‘/posts/:id(\\d+)’, (req, res) => {
console.log(req.params.id);
res.end();
});
“`

今回は、Expressのパスパラメータの書き方の設定方法について、その種類とその挙動(curlコマンドでAPIを呼び出した時のconsole.log(req.params.id)の出力内容)について実際に試してみて理解を深めてみたのでそれについてみていく。

※Expressのversionは4.17.1になります。

## Expressのパスパラメータの設定方法の種類
以下のように設定方法は何種類かあり、それらについてどのようなconsole.log(req.params.id)の結果が得られるか?を見ていく(他にも設定方法があるかもしれないが今回は以下の5種についてみていく事にする)。
![image.png](https://qiita-image-store.

元記事を表示

OTHERカテゴリの最新記事