Node.js関連のことを調べてみた2021年03月16日

Node.js関連のことを調べてみた2021年03月16日

DynamoDb:ローカル環境構築(その2:GUI管理ツール)

aws公式サイトで「NoSQL Workbench」というデータベース管理GUIツールがあるが、テーブル作成・変更、データ登録・更新しづらいので、dynamodb-adminの構築方法を詳細します。

dynamodb-adminの詳しい情報は、以下を参照してください。
https://www.npmjs.com/package/dynamodb-admin

### dynamodb-adminをインストール(グローバルで)
“`
npm install dynamodb-admin -g
※1 もしstrict-ssl問題が発生した場合、下記コマンドで無効にして、再度インストールしてください。
npm config set strict-ssl false
※2 root権限が持ってなかったら、先頭にsudoを追加してください。
“`

### DynamoDBのエンドポイントを環境変数に設定
“`
export DYNAMO_ENDPOINT=http://localhost:8000
“`

### 起動コマンド
“`
dynamodb-admin

元記事を表示

Firestoreの複合インデックスでつまったところまとめ

# 対象読者
複合インデックスを登録しているのに取得できない方

# 解決方法
まず、エラー内容を確認します。firebase Functionsを使っている方はfirebaseのコンソールに入って、Functionsのログからエラーを確認してください。もし使われていない方は、例外処理によってエラー内容を返して確認してみてください。以下のエラー(一部抜粋)が出力されていると思います。

“`
“details”: “The query requires an index. You can create it here: https://console.firebase.google.com/v1/r/project/[projectID]/firestore/indexes?create_composite=[文字列]”,
“`

「クエリを実行するにはインデックスが必要なので作ってくださいね」と書かれており、親切にURLも記載してくれています\:clap:。アクセスすると、Google Cloud PlatFormがブラウザで開き、インデックスを登録するかを聞かれますので、そのま

元記事を表示

nodeのhttp-serverをローカルにインストールして、起動する

# とりあえずしたい事

普通にnodeで簡易的なサーバーを立てたいけど、グローバルにインストールするのはイヤなので、
ローカルに立てるよ。

## フォルダ構成はこうしたい

“`
プロジェクトフォルダ/
node_modules/
html/
index.html
<ここにhtmlをおきたい>
  <nodeのプロジェクトでよく有る、あれやこれや>.json
  etc…
“`

この状態で`localhost:8080`にアクセスしたら
`index.html`が表示するようにしたい

# http-serverをインストールして使えるようにする。

## インストールコマンド

“` 
npm install http-server
“`

## 起動

“`
node_modules\.bin\http-server
“`
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57329/f662c112-ea83-ee62-30d7-

元記事を表示

SlackでAPIを叩くときのボットのあれこれ

#slackって?
`Slack は、チームとコミュニケーションを図るための新しい手段です。メールよりも速く、整理され、安全な方法で実現できます。`(公式から引用)

まあこんなQiitaみてるようなエンジニアに今更いうこともないので割愛させていただきます!

#Botを作ってそいつに色々吐かせよう!

みなさんWebappとか作っててお問い合わせフォームとか作るじゃないですか。
その時にわざわざメアドで送らせてたりしてませんか?(煽り)

そんなのSlackのBotにやらせるのよ!

というわけで早速解説していこうと思うのですが、、、

あの〜〜フロント周りやバック周りは各自やってくださいね、、??

#それでは本編に

SlackのAppの欄から”アプリを作る”を選択。
右上あたりにBotと書かれているアイコンがあると思うので、それをクリック。
そしたら名前つけたり、画像決めたりなどありますが、今回重要なのはそこではなく
![スクリーンショット 2021-03-15 17.40.41.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

【JavaScript】別ファイルに関数をまとめてexportsを利用して呼び出す。

# 開発環境
React.js

# 概要
JavaScriptで関数を共通化して別ファイルにまとめたときに、HTMLのscriptタグを使い呼び出すのは面倒だと思いました。JavaScriptのexportsを使い呼び出すことができることを知りましたので記事にしておきます。

## import.jsとexport.jsファイルを作成
import.jsからexport.jsの関数を呼び出していきます。

“`javascript:export.js
exports.criminalIsKogoro = function () {
console.log(“犯人は毛利小五郎”);
}

exports.detectiveCriminal = function (name) {
console.log(“犯人は” + name);
}

const criminalIsAgasa = function () {
console.log(“犯人は阿笠だ”);
}
“`
比較するためにcriminalIsAgasaだけはexportsしないようにしておきます。

“`j

元記事を表示

Node.js開発者なら知っておきたい便利なパッケージ12選

本記事は、[Indrek Lasn](https://indreklasn.medium.com/)氏による「[12 Useful Packages Every Node.js Developer Should Know](https://betterprogramming.pub/12-useful-packages-every-node-js-developer-should-know-2746db760e)」(2020年9月2日公開)の和訳を、著者の許可を得て掲載しているものです。

#Node.js開発者なら知っておきたい便利なパッケージ12選

>毎日の生産性を上げるNodeパッケージ

![Image for post](https://miro.medium.com/max/600/1*4_n18FH8hRrvlLyRufD1sQ.png)

##はじめに

Node.jsはコードの再利用にぴったりです。コードを再利用するための根幹となるのはNPMパッケージです。

NPMパッケージは、時間と労力を大幅に節約してくれます。日付ライブラリが必要ですか?パッケージがあります。

元記事を表示

npmの復習

# 目次

[1.この記事の目的](#1-この記事の目的)
[2.概要](#2-概要)
[3.パッケージ管理システム](#3-パッケージ管理システム)
[4.もしnpmがなかったら](#4-もしnpmがなかったら)
[5.npmの使い方](#5-npmの使い方)
[6.便利なコマンド](#6-便利なコマンド)
[7.最後に](#7-最後に)
[8.参考記事](#8-参考記事)

## 1. この記事の目的

– npmに関する知識の復習
– もやっとした理解だったため記事を読んで理解を深め言語化する

– 実務でも使えそうな+αの知識を紹介
 - 調べる中で、便利なコマンドなどを学べたので紹介

– 読んでくれる人の理解の手助けになれば

## 2. 概要

### npmとは?
「Node Package Manager」の略。
Node.jsのパッケージ管理を行うツール。

### Node.js
サーバーサイドで動くJavaScript。

#### 特徴

– 大量のデータ処理が可能
– C10K問題に対応
– Apache HTTP Serv

元記事を表示

Bootstrapをnodejsで利用するために調べたこと

##BootStrap使ってカッコつけたい
今回、掲示板アプリ作成してます。
javascriptとhtmlとcssで出来ないこともないけど、せっかくならプラスオンして新しい技術に触れたいと思い、色々調べた結果bootstrapにたどり着きました。

ドキュメントを読んでサラッと使えると思いきや、
豪快につまづいてもがいていました。
###「webpack」が必要みたい。
今回の引用と参考サイトはこちらです。
神の手が差し出された瞬間です。
とってもわかりやすかった。
[最新版で学ぶwebpack 5入門 Bootstrapをバンドルする方法](https://ics.media/entry/17749/)

webpackは簡単に言えば、複数のJavaScriptを1つにまとめること。
1つにまとめることができれば、htmlやejsへの適用もシンプルになります^^
javascriptだけではなく、sassファイルやcssファイルもloaderと呼ばれるモジュールをインストールすることで,webpackで1つにまとめることが出来る優れものです。

今回、bootstrapをnode.

元記事を表示

Fire Storageを監視してサイレントプッシュ通知を送信

# 概要
Fire Storageに画像ファイルのアップロードがなされるとCloud Functionsを通してサイレントプッシュ通知を送信します。

今更感はありますが、ググってもpayloadの記述に統一性がなかったりして割と苦戦しました:sweat:

Stack OverFlowの方でも同じ悩みを抱えていた人がいたので参考になれば幸いです。

なお、本記事ではFirebase CLIや証明書周りについては触れません。
下準備ができている前提で進めます。

# 環境
– Xcode 12.4
– Swift 5
– nodejs 12

# Fire Storage
デフォルトバケットを使用

# クライアント
## Capability
TARGETS > CapabilitiesよりBackground ModesとPush Notificationsを有効にします。
Background ModesはRemote notificationsにチェックを入れます。
(バックグラウンドで通知を受け取りたい場合はBackground fetchもチェック)

## Swift

元記事を表示

Node.jsでglTFモデルを圧縮してthree.jsで読む込む(DRACO/meshoptimizer)

# 概要
WebGL表現でハイポリ(30K ~ 140K Poly)のglTFモデルを複数使用した際に、転送量やローディングパフォーマンスの観点からできる限りファイルサイズを落としたくて、Node.jsでglTFファイルを圧縮する環境を作ったのでその紹介です。

[リポジトリはこちら](https://github.com/watab0shi/gltf-compressor)

glTFのファイルサイズを軽量化する方法はいくつかありますが、本記事では[DRACO](https://github.com/KhronosGroup/glTF/blob/master/extensions/2.0/Khronos/KHR_draco_mesh_compression/README.md)と[meshoptimizer](https://github.com/zeux/meshoptimizer)による2通りの圧縮方法を紹介します。

# 環境構築

yarnとNode.jsのバージョンは以下です。

“`
yarn@v1.22.5
node@v12.21.0
“`

プロジェクトディレ

元記事を表示

axiosの概要

***axios***

**axiosとは**
ブラウザやnode.js上で動くPromiseベースのHTTPクライアント。非同期にHTTP通信を行いたい時容易に実装することができる。

**GET通信**
axios.getメソッドを使用する。
第一引数にURLを指定、then()で通信に成功した際の処理をかく。catch()でエラー時の処理を書く。
response.dataにデータが返る。

**POST通信**
axios.postメソッドを使用する。
POSTデータはaxios.postの第2引数で渡す。

**レスポンスの構造**

“`node.js
// レスポンス構造.
axios.get(‘http://localhost:3000/users’).then(function(response) {
console.log(response.data); // レスポンスデータ
console.log(response.status); // ステータスコード
console.log(response.st

元記事を表示

【Node.js】ORMでの大量レコードSELECTによるヒープアウトからメモリを救う話

時と場合により、一度のAPIリクエストで数万行を超えるレコードを取得して、それを加工してレスポンスしたいってこともあると思います。

Nodeだと、オプション指定せずに起動させるとデフォルトのメモリ割り当てが512MB(700MBとか1400MBのケースもある?)なので、意外と簡単にヒープアウトしてしまいます。

例として、自分の環境ではTypeORMで25万行を超えるレコードを読み込み、それを加工しようとするとヒープアウト => APIサーバが死亡しました。

1回のAPIコールでサーバの死亡を引き起こす可能性があるのは当然許容できないので、対策を考えていきます。

# 対策
できることは全てやろうということで、考えられる対策を思いつく限り挙げていきます。

## V8エンジンへのメモリ割り当てを増やす
最も安直かつ簡単に取れる対策です。根本的な解決ではないため、これだけやって終わりにするのはエンジニアとしても終わりです。

安直とは書きましたが、少なくともデフォルトの512MBは本番稼働するAPIサーバとしては心もとないため、増やしておくのが無難でしょう。

割当量はNode起動コ

元記事を表示

degit – ! could not find commit hash for master

# 結論

じつに単純なことだった。公式ドキュメントにも[しっかり書いてある](https://github.com/Rich-Harris/degit#specify-a-tag-branch-or-commit)。

“`bash:bash
$ npx degit sprout2000/react-typescript#main react-typescript
“`

# 経緯

_[degit](https://github.com/Rich-Harris/degit)_ は、Github 上のレポジトリを `.git` ディレクトリを除いた状態でダウンロードすることができるツールです。

しかし、ある日突然 _degit_ でレポジトリのダウンロードができなくなりました。

“`bash:bash
% npx degit sprout2000/react-typescript react-typescript
! could not find commit hash for master
“`

うえのエラーメッセージでググると

– [Error: “Cou

元記事を表示

SAM+Node.jsでLambdaをInvokeした際に「Error: Cannot find module ‘luxon’」が出た時の対処法

## 問題点
以下でluxonをインストール

“`
npm install luxon –save-dev
“`

package.jsonに以下が追加される

“`package.json
“dependencies”: {
“luxon”: “^1.26.0”
}
“`

SAM+Node.jsでLambdaをInvokeした際に以下エラー発生

“`bash
sam local invoke TranslationFunction –event request.json
Invoking index.handler (nodejs12.x)
Skip pulling image and use local one: amazon/aws-sam-cli-emulation-image-nodejs12.x:rapid-1.20.0.

(中略)

2021-03-12T22:47:33.403Z undefined ERROR Uncaught Exception {“errorType”:”Runtime.ImportModuleError”,

元記事を表示

Prettierについて

# Prettierについて

## Prettierの利用方法

### package.jsonの生成

“`
npm init -y
“`

### Prettier のインストール
“`
npm install prettier@2.1.1 -D
“`
-Dは–save-devの略で、ローカルインストールを意味する。

### パスを通す
“`bash
export PATH=$PATH:./node_modules/.bin
“`

### Prettierの実行
“`
prettier ファイル名 –write
“`

## ESLintとの併用
* Prettierはあくまでコードフォーマッター
* ESLintのような構文チェック機能はない
* Prettierでコードフォーマット、ESLintで構文チェックすることで、双方の利点を活用する
* eslint –fixだけでコードの整形と構文チェックを可能とする

### 併用に必要なパッケージのインストール
“`
npm install eslint eslint-config-prettie

元記事を表示

nvmで固定のNode.jsのバージョンを使わせる方法

## nvmのインストール方法からnvmの使い方について

以下が参考になる
* https://qiita.com/ffggss/items/94f1c4c5d311db2ec71a

## プロジェクトで固定のNode.jsのバージョンを使わせる方法

versionを”v12.21.0″で固定する場合

“`
$ echo “lts/*” > .nvmrc
“`

最新のltsで固定する場合

“`
$ echo “lts/*” > .nvmrc
“`

nvm installの実行(初回のみ)

“`
$ nvm install
Found ‘/path/to/project/.nvmrc’ with version
Now using node v12.21.0 (npm v6.14.11)
“`

nvm useの実行(初回のみ)

“`
$ nvm use
Found ‘/path/to/project/.nvmrc’ with version
Now using node v12.21.0 (npm v6.14.

元記事を表示

[Node.js] 非同期処理 – async/await編

# async/await

### async/await構文

~~~js
function parseJSONAsync(json) {
return new Promise((resolve, reject) => {
setTimeout(() => {
try {
resolve(JSON.parse(json))
} catch (err) {
reject(err)
}
}, 1000)
})
}
async function asyncFunc(json) {
try{
const result = await parseJSONAsync(json);
console.log(‘パース結果’, result);
}catch (err) {
console.log(‘エラーをキャッチ’, err);
}
}
asyncFunc(‘{“foo”: 1}’)
asyncFunc(‘不正なJSON’)
>>>
ース結果 { foo: 1 }
エラーをキャッチ SyntaxError: Unexpected t

元記事を表示

Expressのnext()は関数を抜けない。次の処理を呼び出すだけ

Expressのミドルウェアのnext()について色々勘違いしていたせいで若干戸惑ったので、顛末を残しておきます。

# 前提
Node.js 14.15.3
Express 4.17.1

# 起こったこと

Expressでリクエストから渡されたトークンを処理するミドルウェアを実装していました。

“`javascript
//get jwt token from authorization header
//set token to token field of request
const tokenExtractor = (request, response, next) => {
const authorization = request.get(‘authorization’)

if (authorization && authorization.toLowerCase().startsWith(‘bearer ‘)) {
request.token = authorization.substr(7)
next()
}

request.token =

元記事を表示

【Node.js】asyncの使い方

#プログラミング勉強日記
2021年3月12日
JavaScriptの非同期処理については[こちら](https://qiita.com/mzmz__02/items/6b83805bc4917810dfb7)の記事で詳しく触れてる。

#asyncの基本的な書き方

“`:asyncの導入
$ npm install async
“`

“`js
// require()を使って使えるようにする
var async = require(‘async’);
“`

 メソッドの第1引数に配列、オブジェクトで複数の関数処理を記述することで非同期処理が実行できる。

“`js:基本的な書き方
async.メソッド名([関数, 関数, 関数, …], 関数);
“`

#seriesで非同期処理を行う

“`js
async.series([
function(callback) {
callback(null, “1”);
},
function(callback) {
callback(null, “2”);
},
function

元記事を表示

Mac環境にNode.jsをインストールする

#はじめに
Mac環境にNode.jsをインストールする方法としていくつかの方法があります。ここではバージョン管理を行うためにnodenvを利用した方法についてまとめます。

#インストール
Node.jsをインストールするためには、以下をインストールする必要があります。

1. Homebrewをインストール
2. nodenvをインストール

##Homebrewのインストール
Homebrewをインストールします。[Homebrew](https://brew.sh/index_ja)に書かれているインストールコマンドを実行します。

“`bash
$ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
“`
“`brew doctor“`を実行して、インストール確認を行います。

“` bash
$ brew doctor
Your system is ready to brew.
“`
これでHomebrewのインスト

元記事を表示

OTHERカテゴリの最新記事