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

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

node.jsでsqlite3を利用する

node.jsでsqlite3を利用する機会があったのでメモ。

## 前提

* 私の環境はMac(なので最初からsqlite3が入っている)sqlite3 –versionで確認可能。
* node.jsがインストールされている

## 準備

### 作業場所やファイルの生成

作業場所を作る。名前は何でも良い。ここではindex.jsに実装していく。

“`bash
mkdir node-sqlite3-test
cd node-sqlite3-test
npm init -y
touch index.js
“`

### sqlite3をnode.jsから制御するためのモジュールをインストール

sqlite3と同名なのでややこしいといえばややこしい。

“`bash
npm install sqlite3
“`

>これはsqlite3をインストールしてるのではなく、制御モジュールのインストール。

## 基本(だが、悪い例)

早速実装。

### 実装例

モジュール読み込んで、newして、db.run()でいろいろ実行するのが基本。

>ただ、感の良い人は

元記事を表示

nodeJS+expressでMongoDBにアクセスする

# はじめに
ちょっと前まで仕事でkotlin+androidを使ってアプリを作っていたのですが、androidアプリを作ると当然のようにiPhoneアプリの開発依頼が来ます。
もともとandroidアプリを作る前はCakePHPで作ったアプリを使ってもらっていました。
ですが、WEBアプリは通信ができない場所では使い物にならないため、通信障害に強いアプリにする必要があり、androidアプリを作成した背景があります。
作ったのは良いのですが、WEBも現役で使ってもらいながら、androidアプリも使ってもらうとなると、一つ機能を追加するたびにWEBとandroidの両方を修正する必要があります。
ここにiPhoneも加わると、ソースコードの3重持ちになって大変です。
WEBとandroidアプリくらいなら何とかなるかなーと思っていましたが、2重持ちだけでも結構大変です。
ここにiPhoneアプリが加わると、これは、もう無理かな…と。

そんなときにangularやreactやらの情報を得て、いろいろ試している最中です。
angularやreactは基本的にRestAPIとの連携になる

元記事を表示

【AWS】Node.js 14.xを使って、Lambda関数から他のLambda関数を呼び出す

## きっかけ
とある案件の要件確認MTGをしているときに、
僕:「LambdaAを動かすために定期的にLambdaBを動かす構成」
?:「LambdaBを定期実行ではなく、条件を満たしていない時だけ動かしたい」
みたいな話があり、そういやLambdaから他のLambdaを動かす方法ってどうやるのか?という疑問から
※ そもそもLambdaから他のLambdaを呼び出すことに抵抗があり、できれば定期実行を軸に進めたいのは本音。フェイルセーフ的な位置づけでロジック自体は実装することになりそうとの考察。(基本は定期実行。なんらかの問題で条件を満たさない場合があればLambda呼び出し実行。) Best Practiceに沿った内容があればコメントください。。。

## 前提
– AWS: 社用アカウント利用

## Summary
– 呼び出す側Lambda関数で、AWS-SDKのインポート、AWS-SDK.Lambdaのインスタンス化、Lambdaインスタンスでinvoke関数の実行
– 呼び出す側Lambda関数のIAMポリシーに “lambda:InvokeFunction”を許可す

元記事を表示

herokuでrails + nodejsでnodeのバージョン指定する方法

# 前置き

railsアプリを構築し、webpacker用にnodejsを入れたアプリを作った際、
nodeのバージョンが12系なのが気になった。
現時点でのLTSは14系なので開発環境と差異が発生しており環境差異でハマるのが嫌なのでheroku側のnodeバージョンを上げる方法を追求してみた。

軽く検索するとよく引っかかるのが `heroku Buildpacks` を使うというもの。

## 公式ドキュメント
https://devcenter.heroku.com/ja/articles/buildpacks

だがしかし、上記を見てもバージョンを指定する具体的な方法自体は記載がない。

ググって見た感じ、 `package.json` にバージョンを追記するとバージョンが指定できるとある。

“`json
“engines”: {
“node”: “14.17.2”,
“npm”: “6.14.13”
}
“`

ただし、railsアプリでこれをやってpushしても

“`
remote: error app@1.0.0: Th

元記事を表示

セットで学ぶ!Firestoreのクエリとルール

# 背景
Firebaseを使うと、バックエンドを構築する手間が省けて楽ちん。
しかし楽ちんだからといって、大切なことを怠るとと大きな危険が待っている。
大切なデータが保存されているDBにアクセスするAPIがどこからでもコールできる、ということは非常に危ないこと。
そのセキュリティの穴を塞いでいるのが、Firestoreの「ルール」である。
楽をするからには、徹底的にセキュリティに穴を塞がなければならないが、このルールの記述が簡単ではない。
特に、こういうクエリを投げるときにはこういうルールを記載しなければならない、というようにクエリとルールが分かりやすく結びついているドキュメントがほとんどない。
Vue.js + Firebaseでの開発も非常に苦労したので、私が調べて学んだことをメモしておこうと思った。
万が一、誰かの役に立つことができればとても幸いである。

# データの取得
## ケース① 自分のユーザIDに紐づくデータを取得する
1つ目なので、少し詳細に記載する。
![image.png](https://qiita-image-store.s3.ap-northeast-1

元記事を表示

npm_config_arch, npm_config_target_arch, そして npm_config_* 環境変数について

`npm_config_` で始まる環境変数は `npm` コマンドによって解釈される。 `npm_config_foo=bar` とセットすると npm のコンフィグ `foo` を `bar` にセットしたのと同じ意味になる。 https://docs.npmjs.com/cli/v7/using-npm/config#environment-variables

この環境変数の名前は大文字でも小文字でもいいが、 npm は scripts を実行するとき名前が小文字バージョンの環境変数を独自にセットする。それは(ユーザーによってセットされた)名前が大文字の環境変数よりも優先されることに注意。ユーザーによって名前が小文字の環境変数がセットされたらそれが最優先される。

`npm_config_` で始まる環境変数は `npm` コマンド以外にも認識されることがある。中でも Node のネイティブ拡張を扱うライブラリ node-gyp と node-pre-gyp に関する環境変数は覚えておくといい。

https://github.com/nodejs/node-gyp/blob/

元記事を表示

M1 Mac で grpc-tools を npm install できない問題の回避策

**TL; DR:** 環境変数 `npm_config_target_arch=x64` をセットしてから `npm install` なり `yarn install` なりを実行するとよい。

この記事を書いた2021年7月14日の時点で、 grpc-tools (1.11.2) をインストールしようとすると node-pre-gyp がエラーを出してインストールに失敗する。

このエラーは node-pre-gyp が grpc-tools の arm64 向けコンパイル済みバイナリをダウンロードしようとして失敗することに起因する。 arm64 向けバイナリはまだ配布されていない[^1]。

エラーを回避するには環境変数 `npm_config_target_arch=x64` をセットしてから `npm install` や `yarn install` を実行する。これをセットすると node-pre-gyp が `–target_arch=x64` 引数を指定されたかのように振る舞い[^2][^3]、 x64 向けコンパイル済みバイナリをダウンロードするように

元記事を表示

【Node.js, TypeScript】LINE MessagingAPIで作った天気予報アプリをAWSのLambdaにデプロイしてみる!

先日、Node.jsとTypeScriptで天気予報アプリを作成しました。

https://qiita.com/Ryo9597/items/4c05b8b972ad7efc0c66

完成形としては以下の通りです。
![名称未設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/838372/0af0bfce-b695-b341-4e90-aeefde544562.png)

この記事内では、`Glitch`でデプロイをしています。
まぁ無料なわけで色々問題があります。
・プロジェクトは、利用されていないときは5分でスリープ状態になる
・4000件/1hのリクエスト制限がある(Error: 429 too many requests)

ということで、AWSのLambdaを使ってデプロイすることにします。
それではアーキテクチャに関してみていきましょう。

## サーバーレスアーキテクチャとは
AWSにおけるサーバーレスとは、**「インスタンスベースの仮想サーバー(EC2など)を使わずにアプリケーション

元記事を表示

Node.js Express

#【Node.js Express 】

Node.jsは、サーバーサイドとクライアントサイドの両方のプログラミングができる。
特徴は、**イベントループ**と**ノンブロッキングI/O**

##Express

**Express**:Node.jsのフレームワーク
 → Webアプリケーションを開発するための機能を提供する。
→ 便利な機能をまとめたパッケージの1つ

このパッケージを用意するために、
**npm(Node Package Manager)**システムを使う
これには、パッケージを共有、取得する機能がある。

###インターネットから自分の環境にパッケージをインストール

“`
$ npm install express
“`

###インストールしたExpressを利用

パッケージの読み込み、使用するための準備が必要

“`
const express = require(‘express’);
const app = express();
“`

###listenメソッド 実行

listenメソッドを用意して、.jsファイルを実行し、サーバーを起

元記事を表示

【Docker】AmazonLinux 導入方法

# はじめに

最近、Docker の便利さを再認識し、何をするにしても Docker を使うことを検討してしまっています。

今回は AWS EC2 でよく使われている(と思う)Amazon Linux を Docker 上で使用する方法についてご紹介したいと思います。

#### 関連リンク
関連リンクを下記に載せておきますので、必要であれば参考にしてください。

* 【Rails】開発中プロジェクトへDocker導入・環境構築方法
* https://qiita.com/syukan3/items/f8d426b8334086fa4c15

# Amazon Linux イメージ取得

“`bash
# DockerHub から amazonlinux のイメージを取得
$ docker pull amazonlinux

# 取得したイメージ確認
$ docker images
# REPOSITORY TAG IMAGE ID CREATED SIZE
# amazonlinux latest

元記事を表示

node.jsのasync/awaitを簡単に説明する

# 非同期処理とは?

非同期処理は実行待ちの間に別の処理を実行することができる。

“`https://www.rworks.jp/system/system-column/sys-entry/21730/#:~:text=%E9%9D%9E%E5%90%8C%E6%9C%9F%E5%87%A6%E7%90%86%E3%81%A8%E3%81%AF%E3%80%81%E4%B8%80,%E3%81%AA%E8%A6%81%E7%B4%A0%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82
非同期処理とは、一つのタスクを実行中であっても他のタスクを実行できる実行方式をいいます。
“`

# javascriptは非同期処理である

javascriptは非同期処理であるため、プログラムの順番通りには処理は完了しない。

“`https://book.impress.co.jp/books/1120101055
Javascriptでは、時間のかかる処理は常に「非同期」(asynchronous)である。
“`

# 非同

元記事を表示

internal.ReadableとNodeJS.ReadableStream

mp4やmp3をインターネット上から取得して、その音声をDiscord.jsでBotに流し込むためにちょっと躓いたことがあったのでメモ書き
両方とも、Streamであることは変わりないのだけど、簡単に言えば古いのと新しいのという関係性らしい

## internal.Readable
新しい形式のStream。Discord.jsではこちらが使われている。大体新しいライブラリはこっちのStreamを吐くことが多いみたい。

## NodeJS.ReadableStream
古い形式のStream。node-fetchのbodyとかは(なぜか)こっちの形式でデータを返してくる。

## 互換性
互換性はない。ただし、古い形式である`NodeJS.ReadableStream`を新しい`internal.Readable`に変換(ラップ)することは可能([この記述を公式ドキュメント内で見つけるの](https://nodejs.org/api/stream.html#stream_readable_wrap_stream)にかなり時間がかかった…)

### 変換(ラップ)の例
Dis

元記事を表示

node.js で PN532 を使ってNFCを読む

このあいだ、Raspberry pi で node.js + typescriptで書いてるアプリでNFCを読む機会があり、調べたのでメモ。

## ハードウェア

NFCリーダーはこれ

https://wiki.seeedstudio.com/Grove_NFC/

中身は PN532

これを、Raspberry Pi のGPIOピンヘッダにGroveコネクタ生やすやつで接続した。こういうの。
https://amzn.to/3wwxkSB

## UART を使用可能にする
Raspberry Pi 3以降ではBluetoothの接続でuartを使っているために、そのままではuartが使えない(これ知らずに結構時間をロスした…)。

Device Tree Overlay の miniuart-bt で対処した。

以下など参照。

https://www.ingenious.jp/articles/howto/raspberry-pi-howto/gpio-uart

https://qiita.com/hidenorly/items/f6ffe79fb6f81740

元記事を表示

Actions on GoogleのInteractive Canvasを試してみる

Actions on GoogleにInteractive Canvasなるものがあるので、試してみます。
これは、Actions on Googleの発話・応答を、今までの単純なテキストやカードなどのリッチコンポーネントではなく、通常のHTMLで表示するものです。
スマートスピーカ側に画面表示装置が必要なので、限られますが、音声だけではない画面表示も含めることで表現力がアップするのを期待しています。
GoogleのSmart Displayに加えて、スマホも対応していますので、実際に動きを試してみることができます。

今回作成するのは、Googleで画像を検索するように、好きな言葉を発話して、それに関する画像を表示します。

ソースコードもろもろを以下に置いておきました。

poruruba/InteractiveCanvas

https://github.com/poruruba/InteractiveCanvas

参考となるページ

・https://developers.google.com/assistant/conversational/overview
・https:

元記事を表示

【Glitch】Githubからアプリを公開する方法

#1. Glitchで新しいプロジェクトを作成する
 [公式サイト](https://glitch.com/)からGithubでログインする。
 `Start a new Project`から好きなアプリを選択する。

#2. Githubからアプリを公開する
 `Tools > Import and Export > Import from GitHub `を開く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/25586bc3-8ede-fe63-197f-9ba5115354fd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/ceeda763-c05d-d7e0-a76b-3099e460e288.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

Telegraf で InfluxDB 2.0 にデータを入れる

次のページを参考にしました。
[Grafana+InfluxDBv2+telegrafで室内温度を可視化する](https://izuminmin.com/server/try-grafana-influxdb-telegraf/)

Arch Linux で Telegraf のインストール

“`bash
yay -S telegraf
“`

起動

“`bash
sudo systemctl start telegraf
“`

設定ファイルの編集
>UDP 8092 に入ってきたデータを、InfluxDB に送ります。

“`text:/etc/telegraf/telegraf.conf
(省略)
[[outputs.influxdb_v2]]
urls = [“http://127.0.0.1:8086”]
token = “1zIYs1taCm3pWQOBUNk0ssYccOF7YgJcdGyJDbiFYTBf7hcPvyl5nGyt71rNVkYtg2rB
ceUwQ1r5Xzm7Mabcde==”
organization = “ekzemplaro”
b

元記事を表示

【今日から始めるAWS】AWS IoT Coreでpub/subする

#はじめに
30代未経験からエンジニアを目指して勉強中のYNと申します。
IoTの場面では、多対多の双方向通信が必要となります。これはWeb開発で一般的に使われる素のHTTP通信で実現することはできず、

* MQTT
* WebSocket
* MQTT over WebSocket

といった双方向通信プロトコルを使う必要があります。
[詳しくはコチラにまとめました。](https://qiita.com/theFirstPenguin/items/55dd1daa9313f6b90e2f)

今回は **AWS IoT CoreによるMQTTブローカーのマネージドサービス**使って2つのクライアント間でMQTTメッセージのやり取りを行います。
![Server architecture-Page-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572098/63c7b4b7-a022-dd3e-535f-75eacc714242.png)

#AWSコンソールで「モノ」を作成する
AWS Io

元記事を表示

[Node, npm] Missing write access to /usr/local/lib/node_modules でグローバルインストール(npm i -g)ができない時の対処法

# はじめに
長年使ってきたMacbook-air mid2013に別れを告げて、新しいmacに移行して環境構築した際につまづいたのでメモ。同じく新しいPCで環境構築する人の役に立てれば!

# エラー概要
新しいPCに移行して、とりあえずnodeのインストールだ!!と [nodeの公式](https://nodejs.org/en/download/)からインストーラをダウンロードしてインストール。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366323/ccfa2f60-56b8-9206-f6e9-2eb296f9d8dc.png)

そのあと、firebaseを使いたかったので
`npm i -g firebase-tools` を実行すると以下のエラーが。

実際のターミナル画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366323/acb33477-5967-6b80

元記事を表示

【Node.js】Node.jsの最大メモリを増やす方法

#Node.jsの最大メモリを増やす方法
 `設定>システム>詳細情報>システムの詳細設定`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/f1a1e8e8-e250-7580-cfc0-933f8add5018.png)

 `詳細設定>環境変数`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/11fa65e6-2791-e494-5c92-64449bb12d88.png)

`システム環境変数>新規`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/78f798dc-ae1a-fc1f-8969-891e139e88e0.png)

“`
変数名: NODE_OPTIONS
変数値: –max_old_space_size=30720(

元記事を表示

#programming #powershell #csharp #Javascript #nodejs # C1(分岐網羅)のテストをするツール

本内容を利用した場合の一切の責任を私は負いません。

# 機能
ソースの中の分岐を通過したことがわかるように、ソースにトレース出力するソースを自動的に追加するものです。
PowerShellスクリプトで行っています。
**ソースを変更するため、git等のソース管理システム下等、ソースを復元できる環境下での使用を推奨します。**
追加されたソースを実行すると、通過情報がファイル(以降、通過ファイル)に出力されます。
(オプションにより、継続して記録するファイル(以降、報告ファイル)を出力させることもできます。)
出力によりフローを追えるため、デバッグにも利用できます。
通過情報は、1実行内で1度しか出力されません。
(ループ内のトレース出力は1度のみ。)
報告ファイルがある場合は、報告ファイル内の通過情報がリセット(「ー」)されてないと1実行に限らず継続して出力されません。
Java、C++は対応言語と仕様が似ているため、既存言語処理を流用・変更して対応させることもできると思います。
また、Javascriptのnode.js環境外は、トレース出力先に困っただけなので、ブラウザの専用ウィ

元記事を表示

OTHERカテゴリの最新記事