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

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

【Node.js】Express.jsからMySQLのデータ加工、ejsへの受け渡し

#目的
現在、MySQLの店舗データを編集できるアプリケーションを作成しています。Node.jsのexpress.jsを使用し、viewにはejsを利用しています。この記事では、初学者の私がつまずいた、パラメータの受け渡しについて記述します。

ずばり「企業一覧画面から、企業に属した店舗の一覧を表示させる」処理についてです。

##一連の処理は、こんな感じです
企業一覧画面(ejsで表示)
→ 店舗名のリンクをクリック
→ express.js(app.js)でデータを加工
→ 加工したデータをejsに渡す
→ ejsで表示させる

#参照
・[Express.js(node.js)からMySQLへの接続とCRUD操作](https://reffect.co.jp/node-js/express-js-connect-mysql#expressjsMySQL)
・[[Node.js][Express]リクエストからパラメータを取得する・POSTされたデータを取得する](https://tech.chakapoko.com/nodejs/express/params.html)
・[fo

元記事を表示

【AWS】AWSのSESとnodemailerを使って、独自ドメインからメールを送信してみた

皆さんこんにちは!

最近AWSの様々な機能に触れるようになったのですが、何と言っても便利!!!

こういう機能無いかなと調べたらほぼ確実にある!

そんなこんなで今回はAWSのSES(Simple Email Service)を使って、“nodemailer“で独自ドメインからメールを送信して見ようと思います!

#はじめに#

独自ドメインは取得しているていで話を進めていきます。

また、SESでの設定も今回は省きます。

SESでメール送信の設定を行っていないという方は、下記の記事をご覧ください。

・[【AWS】AWS初心者がRoute53+SESを使って、独自ドメインでGmailからメールを送信してみた](https://qiita.com/akki-memo/items/616671ccb009a0202113)

それでは説明を見ていきましょう!

#nodemailerの準備#

まずは、パッケージをインストールします。

“`
npm i nodemailer
“`

次に、SESでメールの登録を行った際に、ユーザー名、パスワードの情報をダウンロードしているか

元記事を表示

ある時刻で関数を実行したい?それFirebase Functionsでやっちゃおうよ

どうもアッキーです。

ふと、日にちをまたいだ時にユーザーの決済の日にちが過ぎていないかを調べたいなと思っていたら、Firebaseで常備されているらしい。

Node.jsで“cron“と言うパッケージがあるらしいが、Firebaseでも実行できるらしい!

記事を見なくてもFirebaseの公式ドキュメント([関数のスケジュール設定](https://firebase.google.com/docs/functions/schedule-functions?hl=ja))にも書いてあるので是非ご覧ください。

公式ドキュメントにも書いてあるのですが、この公式ドキュメントでは実行の時の時間について詳しく書いておらず、そのためにこの記事を書いていこうかなと思います。

とりあえず、説明していきます!

#時間の設定#

今回は日にちをまたぐときに実行する方法を書いていきます!

“`index.js
const functions = require(‘firebase-functions’)
const admin = require(‘firebase-admin’)

co

元記事を表示

GCP Cloud Build で `FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed – JavaScript heap out of memory`

ヒープ領域が限界に近くて割り当てに失敗したらしい

## Cloud Build で使われていたマシン
– デフォルトの`n1-standard-1`
– https://cloud.google.com/compute/docs/machine-types/?hl=ja#n1_standard_machine_types
– メモリ 3.75Gb
– この領域をいっぱいに使ってるか? → そうでもなかった
– `node -e ‘console.log(Math.floor(v8.getHeapStatistics().heap_size_limit/1024/1024))’`
– このデフォルトは`1400`MB
– なので、割当メモリを十分に使えていない可能性

## 解決策
– `NODE_OPTIONS=–max-old-space-size=xxx`
– `xxx`にメガバイト単位の数字を指定。 筆者は`3072`と指定した
– `–max-old-space-size=xxx`
– https:/

元記事を表示

Node.js メインスレッドで重い処理を行う

## はじめに
Node.jsの特徴としてシングルスレッドであることが挙げられます。そのため、CPU負荷の重い処理をさせると、スレッドがブロックされてパフォーマンスが低下するので、そのような処理はNode.jsには不向きとされています。どうしても重い処理をしたいときは、マルチスレッドやマルチプロセスを用いることもできます([参考](https://qiita.com/darai0512/items/568ea7d49d2c522b7c45))が、いずれも重大な欠点があります。

### マルチスレッドの問題
Node.jsにおけるマルチスレッドでは、基本的にlibuvが提供するthreadpoolからスレッドを取得して使うことになると思います。しかし、libuvのthreadpoolは最大で128個(既定で4個)のスレッドしか供給できません。さらに、libuvが提供するスレッドは、ファイル操作の非同期処理にも使われます。例えば、ローカルファイルの読み書きを行う場合は勿論、ドメイン名をIPアドレスに変換するresolve処理でも(`/etc/resolv.conf`などを読み込む必要があ

元記事を表示

JavaScript製のJSON用テンプレートエンジンの比較

JavaScriptから複雑なJSONを動的に生成するテンプレートエンジンを必要としているため、既存のライブラリを一通り調べてサンプルコードを列挙しました。
もしおすすめのライブラリをご存知でしたらコメントください。

目的としているテンプレートエンジンの仕様ですが、以下を必要としています。

– JSONまたは文字列をテンプレートとし、JSONを入力値とする
– 出力結果はJSON
– テンプレート中の指定キーワードをJSONの入力値で差し替える
– foreach/if/unless/optional などの制御構文を持つ

https://npmjs.com

から既存のライブラリを調査中です。

## json-templates

https://github.com/datavis-tech/json-templates

サンプル1:

“`javascript
// Context values could be objects and arrays.
const template = parse(“{{foo:baz}}”);
console.log(templ

元記事を表示

node.jsのインストール

#結論
nvmを利用しましょう。node.jsを直接インストールすることもそりゃできますが安定バージョンを簡単に取得できるnvmは最強です。ということで、nvmのインストールを解説するよ。

#nvmのインストール

“`
$curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
“`
##node.jsの安定バージョン

“`
$ nvm install stable –latest-npm
$ nvm alias default stable
“`

node.jsをインストールすれば一緒にnpmもインストールされてるはずです。念の為最新バージョンにアップデートしておきましょう。

“`
$ npm update -g npm
“`

#起動

“`
$node
“`
これでnode.jsをインストールできれば完了です。

#パッケージのインストール
パッケージをインストールするためにはまずinitで初期化処理が必要となります。これはパッケージがどのようなものがイ

元記事を表示

Node.js? Express? yarn? ナニソレ

##はじめに
現在,Expressでポートフォリオを作成している大学4回生です.
ポートフォリオ作るにあたっていろいろ調べまくったのでまとめます.

###※注意
* 環境構築に関する記事ではありません.
* これを読んだからといって何を得るわけではありません

##Node.js?
JavaScriptで開発をしている(目指している)方で聞いたことのない方はいないと思いますが,実際Node.jsって何者なんでしょうか?
ずばりNode.jsとはサーバーサイドで開発するためのJavaScript実行環境です!!!
ん?どゆこと?って人はひとまずソーナンダーって思ってください.これを使うことで色々便利なことがあるんです.
###-使う理由
ではなぜブラウザで動くただのJavaScriptではなくNode.jsを使うのでしょうか.だって書くのは同じ言語なのに
先程も説明した通りNode.jsはサーバーサイドのJavaScript実行環境なのでブラウザで動くものより色々自由度が上がるんです.例えばファイルを読んだり,書き込んだりする際ブラウザ上のコードではできません.
なぜならそんなことがで

元記事を表示

【Node.js】【npm】これらは何者?

何かと目にすることが多いが、いまいち概要がつかめていなかったNode.jsとnpm。ざっくりとですがまとめてみました。詳細は、今後学習する中で更新していきたいと思います。

##(前置き)JavaScriptとは
ブラウザ上で動くために開発されたプログラミング言語。コンテンツに動きをつけたり、DOM要素をいじったりすることができる。

・クリックしたら特定の位置まで画面がスクロールされる
・ポップアップで注意事項を表示する

等々のことが実装できる。

パソコン上で動くわけではないので、PHPやRubyなどのサーバーサイドの言語と異なり、OS上のファイル等にアクセスすることはできない。

##Node.jsとは
サーバサイドのJavaScript実行環境。

Node.jsではJavaScriptでOSの機能にアクセスするプログラムを組むことができる。それにより、ブラウザ上で動作していたときはできなかった、自由なファイルの読み書き等ができるようになる。

また、クライアントサイドの(ブラウザで実行する)JavaScriptの開発環境としても使用されている。

個人的に感じた使用する理由

元記事を表示

Node.jsを使ってお手軽インドカレー検索LINE Bot を作ってみた(1.簡単な応答)

#はじめに
皆さん、LINE Bot について様々な箇所で使われているので既にご存じの方も多いと思います。
ただ自分が作るとなると少し敷居が高いように感じますが、そんなことはありません!!
無料かつアイデア次第で面白いものを作成できると思います。
僕は近くのインドカレー屋を探しすぎたのがきっかけで LINE Bot に触れてみました。(なぜかGoogleが面倒)

最終的には**位置情報、フリーワードでインドカレー屋を検索、お気に入り機能の実装**までを目標に紹介していきます!
まずは**お手軽にNode.js(Express)を使って LINE Bot を作れる**ことを紹介していきます!

**最終目標サンプル**
![IMG_1803.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1178305/84203b3a-2f83-55a9-471c-b489bd975cf9.png)

#LINE Bot 作成手順
### ①LINE 設定
#### (1)チャネルを作成
[Messaging APIを

元記事を表示

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.

元記事を表示

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

# 開発環境
React.js

# 概要
React.jsで関数を共通化して別ファイルにまとめたときに、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しないようにしておきます。

元記事を表示

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
“`

プロジェクトディレ

元記事を表示

OTHERカテゴリの最新記事