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

Node.js関連のことを調べてみた2020年08月01日
目次

node.jsの標準のhttpsモジュールでAPIへのリクエストを実行する

## やりたいこと
node.jsの標準のhttpsモジュールでAPIへのリクエストを実行したい。
node.jsでHTTPリクエストを行う際には、[requestモジュール](https://github.com/request/request)が使われるケースが多かったようだが、[2020/2/11でdeprecated](https://github.com/request/request#deprecated)になったようなので、代わりにnode.jsの標準モジュールで実行したい。

## 実装

以下のような実装でリクエストを実行できた。
APIは、[zipcloud 郵便番号API](http://zipcloud.ibsnet.co.jp/doc/api)を試しに叩いている。

“`js
const https = require(‘https’); // 1: 標準のhttpsモジュールを使用

https.get(‘https://zipcloud.ibsnet.co.jp/api/search?zipcode=1000000’, (res) => {
if

元記事を表示

【npm】package, scriptsを利用した開発の際の知見や心得

## 概要
– JavaScriptでの開発において、npmを利用して得た知見や心得等のまとめ。
– 今回は、packageやscriptsに絞って記載。

## package

### package.json内の情報はできるだけ記述する
– こちらのメタ情報によって、Documentにもなりえる他、特定環境指定等、より多くの機能を与えることができるため。
– 例として下記のように指定することで、環境を制限して開発環境を統一することができる。

“`json
{
“engines”: {
“node”: “>=10”,
“npm”: “~5.0.0”
}
}
“`

### package.json内へのコメントは、フィールドを利用する
– JSON形式でありコメントの対応が無いため、記述する場合は下記のようにフィールドを利用する形で情報を与える。
– `comment`と記述しておくことで、検索が容易。

“`json
“comment”: “….”
“`

### ロックファイルは常にリポジトリにコミットする
– `package-loc

元記事を表示

DynamoDBのデータをnode.jsのReadableStreamに流す

DynamoDBテーブルのデータをざーっと `ReadableStream` に流し込みたかったが、どうやってバックプレッシャーに対応すればいいのか分からなかったので対応させてみた。

# やりたいこと

– DynamoDBからデータを読み込む(基本は内部バッファサイズ分)
– `ReadableStream` にpush
– ひたすら読み込んではpush
– 詰まったら一時停止
– 次回開始位置をpushしきれなかったアイテムに設定
– またpushできるようになったら続きから読み込み再開
– 以下繰り返し
– 全て読み込んでpushし終わったら処理終了

# DynamoDBのQuery/ScanとLimit

DynamoDBのQuery/Scan操作では `Limit` を指定することで取得件数を制限することができる。
ただ `Limit` は検索結果の件数制限でなので、`QueryFilter` や `ScanFilter` を掛けると検索結果がさらにフィルタリングされ指定した件数より少ない件数が返ってくる場合がある。

クエリーで検索し、指定件数分の結果が揃ったら、クエリ

元記事を表示

Linuxでts-node-devを使うときに、エラー `ERR_FEATURE_UNAVAILABLE_ON_PLATFORM` が発生したときの対処法

## 発生したエラー

“`
TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
at Object.watch (fs.js:1470:11)
at add (/home/reoring/git/yyts/yychat-server/node_modules/filewatcher/index.js:74:34)
at /home/reoring/git/yyts/yychat-server/node_modules/filewatcher/index.js:93:5
at FSReqCallback.oncomplete (fs.js:177:5)
“`

## 対処法

node-devの起動オプションに`–poll`を追加する。

“`
“scripts”: {
“start

元記事を表示

nodeの使用可能メモリを増強する場合、vm.max_map_countによる制限がかかることがある

# 環境

– 言語:node v14.7.0
– CPU
– AMD Ryzen 9 3900X 12-Core Processor
– Processer 24
– メモリ容量:62.8GB
– OS:Ubuntu 18.04.4 LTS (Bionic Beaver)

# あらまし

メモリを64GB搭載しているUbuntu上で、 `–max-old-space-size` オプションによって最大消費メモリを48GBに拡張した状態でnodeを動かしたところ、プログラムの内容に依存して、48GBを使い切れる場合と、20GB程度を消費した時点でメモリエラーが発生する場合の2通りの挙動があった。

その原因はプログラムの動作の違いによるメモリアロケーションの仕方の違いにあり、メモリを使い切れないプログラムではマッピング数が超過することによりmmapシステムコールがENOMEMを発生させることによるものだった。

`sudo sysctl -w vm.max_map_count=655300` コマンドによりシステムの最大マッピング数を拡張した結果、与えたメモリをプ

元記事を表示

nodebrewで入れたnodeが存在するのにno such file or directoryになる問題

**【注意】これを読んでも解決しません**

# 環境
– Raspberry Pi 4
– Ubuntu Mate 64bit
– nodebrew 1.0.1
– node v12.18.3

# 症状
nodeコマンドが実行できない

“`shell
$ node -v
-bash: /home/user/.nodebrew/current/bin/node: No such file or directory
“`

“`shell
$ ls -la /home/user/.nodebrew/current/bin/node
-rwxr-xr-x 1 user user 40769188 7月 31 14:06 /home/user/.nodebrew/current/bin/node
“`

あるじゃないか!!!

…存在するファイルの no such file or directory は、どうやら32bitに対応していない64bit OSで32bitのバイナリを実行しようとしたときに出るらしい?

# 諦め
たぶん
「[Can we update t

元記事を表示

herokuでNode.jsを立ち上げるまでの手順

色々と理解できていないことは多いですが、とりあえずherokuで立ち上げられたので手順を記載。
エラーでまくったしいろんなサイト見すぎてもはや何を参考にしたのかわからなくなってます。

# 前提
① Node.js、herokuはインストール済み
② パッケージマネージャーはyarnを仕様
下記の記事を見てyarnにしました
https://qiita.com/qulylean/items/afa2acff6ed963c88798

# yarnのインストール
上記の記事を参考にyarnをインストールします。

# yarnでhttpモジュールのインストール

コマンドプロンプトを立ち上げて今回作成したいフォルダまでディレクトリの移動をします。

“`
フォルダの移動
$ cd フォルダ名

前に戻る
$ cd ..

フォルダの作成
$ mkdir フォルダ名

フォルダを作成して移動
$ mkdir フォルダ名 && cd フォルダ名

ファイルの作成
$ type nul > ファイル名
“`

ディレクトリの移動が完了したら下記のコマンドを実行します。

“`
$ y

元記事を表示

【Express】ミドルウェアとは何か

##ミドルウェアとは何か
ミドルウェアとは:サーバーの動作をカスタマイズするもの。
ルーターハンドラが作動する前に何かを行うもの。

・ミドルウェアがない時

“`
新しいリクエスト

通常のルーターハンドラが作動
“`

・ミドルウェアがある時

“`
新しいリクエスト

ミドルウェアが作動!

通常のルーターハンドラが作動
“`

##ミドルウェアの設定

“`javascript

app.use()
“`
を用いて設定する

##ミドルウェアの動作例
・リクエストしているHTTPメソッドと、リクエストを送っているパスをターミナルに表示させる

“`javascript
app.use((req, res, next) => {
console.log(req.method, req.path) 
next() //ミドルウェア機能の終了を明示的に表示
})
“`

・ミドルウェアを使ってアクセスを制限する

GETリクエストを送るとアクセスを拒否され、それ以外だと通常のルーターハンドラが

元記事を表示

npmコマンドを使えるようにするまでのまとめ【mac】

macの初期状態ではnpmコマンドを使うことができないので、それを使える状態になるまでを記事にまとめました。
macでnpmコマンドを使えるようにするには、Homebrewのインストール,Nodebrewのインストール,Node.jsのインストールが必要なので、それを順番にインストールしていきます。

#### このページの最後に順番にやっていった場合の各場面での画面のスライドを埋めこんでいますので、解説が分からない場合は、そちらで確認しながらやってみてください!

## Homebrewのインストール
パッケージ管理システムのひとつのHomebrewをインストールします。
(パッケージをmacに最適にインストールしてくれるようにするツールです)

npmインストール1.png

[Homebrew公式](htt

元記事を表示

Node.jsとJavascriptの違い、関係について

# はじめに
はじめてNode.jsを学んだ方や使用した方はこう思いませんでした?

**「なんで同じJavaScriptなのに名前が違うの?サーバーサイドで動くJavaScript?使ってるけどいまいちよくわからない…」**

そんな疑問を持った方たちのために簡単に解説していきます。

# 言語・処理系について
そもそもプログラミング言語とは、コンピュータに情報や命令を伝えるための**「文字・記号の集まり及びそのルール」**です。そして、プログラミング言語によって書かれた文字列を処理系によって処理することで、コンピュータに情報を伝達することができます。

日本人は日本語を理解することができますよね?逆に、日本語を知らない外国人は日本語を理解することができません。これは、日本人が頭の中に日本語の処理系を持っているから言語を理解できるのです!

このように言語は、その言語の意味やルールを処理・理解してくれる処理系がないと全く機能しなくなってしまいます。

# プログラミング言語における処理系とは?
日本語や英語などを理解するための処理系はそれぞれの人間の頭脳でした。じゃあ、プログラミング

元記事を表示

heroku×node.jsでcorsエラーがなかなか解決しないときに気をつけること

node.js(express)でサーバーサイドを記述し、herokuに上げていたのですが、今まではすんなりと解消できていたcorsのエラーに嵌ってしまったので、記事を書くことにしました。
# 環境
– heroku: 7.42.5
– node.js: 12.16.2
– express: 4.17.1
– cors: 2.8.5

# 基本的な対応方法
今回はサーバーサイドとフロントエンドを異なるレポジトリに書いているため、フロントエンドからfetch等でサーバーサイドのAPIを呼ぶ際には、corsのエラーが生じてしまいます。
>Access to fetch at ‘https://xxx.com’ from origin ‘https://yyy.com’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the req

元記事を表示

MERNスタックを学べる動画をまとめてみた(外国語の動画です)

# MERNスタック is 何?
MongoDB, Express, React.js, Node.jsの4つを使った開発環境のアーキテクチャのことです。主に、Webアプリ開発に用いられます。

## MongoDBとは
ドキュメント志向のNo-SQLデータベース。データの保存などに使う。DBは、データベースの意。データがJSON形式みたいな感じなので非常にJavaScriptと相性が良い。

## ExpressJSとは
Node.jsのフレームワーク。Node.jsの機能と一緒に使う事で、バックエンドの構築が出来る。

## ReactJS
単一ページWebアプリのUIを作成するUIコンポーネントを構築出来る。アプリケーションのView部分を担っている。

## NodeJSとは
サーバサイドJavaScriptエンジン のことです。

# MERNスタックの良いところは?
ずばり!!
全部JaveScriptで書けることです!JavaScriptはフロントだけでしか使えへんやろ・・・。と思われがちですが、なんでも行けちゃうんです。もし、HTML,CSS,JavaScriptという

元記事を表示

Node.js新規アプリケーション作成時の設定手順

**前提条件**
node.jsがインストールされていること

# 手順
1: 任意の場所に、アプリケーションを格納するフォルダを作成する
・・・今回はデスクトップにnodeフォルダを作成
 

2: コマンドプロンプトにて下記コマンドを入力し、package.jsonを生成する

“`sh:入力
> cd C:\Users\yamapi1012bs\Desktop\node
# ↑ユーザー名

> npm init –yes
# package.jsonがフォルダに生成される
“`

“`sh:
#以下のように出力されればOK
Wrote to C:\Users\yamapi1012bs\Desktop\node\package.json:

{
“name”: “node”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {
“test”: “echo \”Error: no test specified\” && exit

元記事を表示

MEVN STACKとは〜Vueでフルスタックに作りたい〜

# MEVN STACKって何?
## MEVN STACKってこういうのだよ
### MEVN STACKとは、

– Mongodb
– Express
– Vue.js
– Node.js

の頭文字を取ったもの。
類似にMEAN STACK(Mongodb,Express,AngularJS,Node.js)もありますね!
Qiitaには、MEANはあったけどMEVNについてはなかったので、これから頑張って書いていきたいと思います。
もし少しでもいいね!と思ったら「Looks Good To Me!」をください。励みになります!

## 構成はこうすればできるよ
それぞれの役割についてです。

![vue-node-express-mongodb-crud-mean-stack-architecture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573960/39bb10fc-833a-1841-5c08-cfce39404605.png)
[引用画像:https://bezkoder.co

元記事を表示

【初学者向け】package.jsonについて調べてみた

業務でnpmライブラリのアップデートを行うにあたって、`package.json`についてちゃんと調べてみたので忘備録としてまとめました。

### まずnpmとは
意味としては大きく2種類あると思います。
①npm.Inc社のサービス
https://www.npmjs.com/
npm.Incという会社が提供している上記のサービスことをnpmといいます。今年3月にGithubに買収された会社ですね。このサービス内に、`Javascript`で書かれたライブラリが豊富に存在しています。ここに存在するライブラリを、次に説明するnpmコマンドを使って操作している訳です。

②パッケージを操作するためのCLI
`Node.js`のライブラリを管理するためのコマンドで、ライブラリを生成したり、npm上のライブラリをローカルにインストールしたりするツールです。

## ライブラリとは
ライブラリを使えば、自分で一からコードを書かなくても簡単に機能を実現することができます。

外部ライブラリは自分のプロジェクトに含めるのではなく、「このプロジェクトはnpmのこのライブラリを使っている」という情報

元記事を表示

ラジコンをリッチメニューから遠隔操作する。自動ブレーキ付き

#やったこと
前回作成した[【obniz×LINE Messaging API】音と光を使い侵入防止システムを製作する](https://qiita.com/Toshiki0324/items/6ac09efe6ac6ed0102e6)の時に使用したタッパを乗せて走らせてみました。

#できたもの
LINEのリッチメニューから操作でき、10㎝以内に障害物があると自動で停止します。

元記事を表示

【obniz】IoTでSpotifyライフを充実させよう【node.js】

#はじめに
__あなたの人生を変えたWebサービスを教えてください__
と問われたらこの三つを答えます。
メルカリ
Twitter
###__そして[Spotify](https://www.spotify.com/jp/)です。__

#Spotifyとは
![Spotify_Logo_RGB_Green.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164405/01e379cb-4554-b222-b78a-19ad667ea385.png)

スウェーデン発のサブスクリプション型音楽ストリーミングサービスです。
有料会員数1億800万人、配信曲5000万曲以上、無料〜1480円のプランが用意されていています。

ランニングやジムなど運動中のBGMにしたり、近所の肉のハナマサ(髭男率高め)
でかかっていた印象的な曲を調べたり、レコメンドででた曲が良かったのでライブに足を運んだり、学生時代にCDで聴いていた曲を見つけて胸が熱くなったり、
__私の音楽生活を一つ上のステージに連れて行ってくれた素敵なサ

元記事を表示

TypeScriptを始めよう ~ すぐにできる実行環境構築 ~

## TypeScriptとは?

**TypeScript**とは、マイクロソフトによって開発された、JavaScripで**型定義**を可能にできるように拡張した言語(**AltJS**)です。

AltJS、つまりJavaScriptの代替言語であり、コンパイル時にJavaScriptに変換されます。そして、互換性を持つスーパーセットであるため、JavaScriptと同様の記法が使えます。そのためJavaScriptの知識があればTypeScriptの学習コストはそこまで高くなく、スムーズに理解することができるでしょう。

また、TypeScriptは**漸進的型付き言語**(gradually typed language)であるので、プログラム内の全ての型を指定する必要はありません。これは既存のJavaScriptコードをTypeScriptに以降する際に非常に役に立ちますが、基本的には全ての型の指定をすることをおすすめします。

## 開発環境を整えよう

TypeScriptを試すために、まず開発環境を最低限整えましょう。

プラウザで手軽に試したい人は、こちらを使ってみ

元記事を表示

【初心者でもできる】仕事が忙しくても、赤ちゃんの熱中症の危機にすぐに気づけるIoTをつくった

#はじめに

少し前に、2才のこどもを保育園に送り忘れ、
かつ、車の中に放置してしまい、亡くなってしまう
痛ましい事件が起きました。

本当に悲しい出来事であり、あってはならないことですが、
人ごとではないような気がしました。

何かに集中してしまって、
つい何かやるべきことが抜け落ちてしまうことはある人も多いのではないでしょうか。

今回は、それと類似のシーンとして、
「仕事が忙しく、赤ちゃんの部屋が高温になっていることに気づけなかった」ということがないように、高温になればアラートが出て、気づける仕組みをIoTを使って、できないかとチャレンジしました。

#作りたいイメージ

温度センサーによって、常に部屋の温度を監視し、
赤ちゃんにとって快適な温度(26-28度らしい)から外れた時に、
自動でLINEに通知がくるもの。

さらに、LINEの通知に気づかない可能性があるので、
音やLEDの光でアラートを出す。

その2つの仕組みがあれば、仕事に集中していても気づくことができ、
すぐにエアコンをつけにいくことができるはずです。

#実際につくった仕組み

自動でLINEに通知

元記事を表示

【JavaScript】ライブラリ化しておく便利な3つの自作共通関数を記録

## 前提
– *※記載の共通関数は、各環境によって動作しない場合がある。
→ES2015からES2019で利用できるメソッドも利用しているため*

## 1. chunk
– **指定の数に応じて、対象配列を分割する関数**

### コード

“`javascript:lib.js
const chunk = (arr = [], size = 3) => {
return Array.from({
length: Math.ceil(arr.length / size)
}, (v, k) => arr.slice(k * size, k * size + size))
}
“`

### 使い方

“`javascript:index.js
import { chunk } from ‘./lib.js’

// 対象配列定義
const target = [1,2,3,4,5,6];

// 利用 : chunk(対象配列, 分割サイズ)
console.log(chunk(target,2));
console.log(chunk(target,4));

元記事を表示

OTHERカテゴリの最新記事