Node.js関連のことを調べてみた2019年12月30日

Node.js関連のことを調べてみた2019年12月30日
目次

ReferenceError: fetch is not definedで困ったときに読む記事

### 少年は困っていた。
#### node-fetch がfetchできない。

“`
ReferenceError: fetch is not defined
at Client.request (/var/task/node_modules/amazon-cognito-identity-js/lib/Client.js:55:3)
at /var/task/node_modules/amazon-cognito-identity-js/lib/CognitoUser.js:333:18
at AuthenticationHelper.getLargeAValue (/var/task/node_modules/amazon-cognito-identity-js/lib/AuthenticationHelper.js:96:4)
at CognitoUser.authenticateUserDefaultAuth (/var/task/node_modules/amazon-cognito-identity-js/lib/CognitoUse

元記事を表示

yarn installで”The engine “node” is incompatible with this module”というエラーが発生した件

## yarnをinstallしようとしたら、以下のエラーが発生しました

“`bash
error get-caller-file@2.0.5: The engine “node” is incompatible with this module.
Expected version “6.* || 8.* || >= 10.*”. Got “9.5.0”
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
“`

### 環境
Ruby: 2.6.3
Rails: 5.2.3

## メッセージを和訳してみた
「バージョンは、6.* または8.* または10.*以上がいいんだけど、あなたは9.5.0だったよ」
てなとこかな?

## 解決策
#### nodeのバージョンを確認

“`bash
$ node -v
v9.5.0
“`
やっぱし。

#### インストール済みのnodeの

元記事を表示

Firebase開発環境構築

久々に個人アプリを作ろうと思い、BEにFirebaseを使ってみようと一から構築したのでその備忘録です。
関数の実行するのにデプロイにて確認するやり方が多く、ローカルで確認する方法がなかなか見つからなかったので、そこもまとめてみました。
# Node.jsインストール

“`
// Node.jsのバージョン管理にnodebrewを導入する
$ brew install nodebrew
$ echo “export PATH=$HOME/.nodebrew/current/bin:$PATH” >> ~/.bash_profile
$ source ~/.bash_profile
$ which nodebrew
/usr/local/bin/nodebrew
$ nodebrew setup
Fetching nodebrew…
Installed nodebrew in $HOME/.nodebrew

========================================
Export a path to nodebrew:

export PATH=$HOME

元記事を表示

AWS LambdaとServerless Frameworkで爆速で作るTwitterbot

## 0. はじめに
ここ1年はStackstormばかり扱っているのですが、年末だし他の技術も触るかー!と思いたち、色々自分の作業ディレクトリを漁っていたところ、Twitterbotなるものを発掘しました。

`Stackstorm???`という方はこちらをご参照ください。(自演)
[Dockerで始めるStackstorm再入門1/3(環境構築からOrquestaで書いたWorkflowの結果をslackに通知するところまでのチュートリアル)](https://qiita.com/gkzz/items/4329f0846c873dbce9cf)

話を戻します。
そのTwitterbotですが、私はvpsを使って運用していました。
ただ、そんなに頻繁に動かさないので、また勉強も兼ねて、このたび`AWS Lambda(以下、lambda)移行`にチャレンジした次第です。

`lambdaってなに?`という方は、AWSがオフィシャルなハンズオンを公開しているので、そちらをご参照ください。

Python-shellの使い方

#1.目的

Node.js上で動作するJavascripコードからPythonコードを呼び出す。またPythonコードの出力をJavascriptコードが受け取り、受け取ったデータをJavascript上で処理したい。

![1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/2979fa1d-5577-f751-b2b8-9b7f8f2a324d.jpeg)

#2.手段

Python-shellを使います。[Python-shellのソースはこちら](https://www.npmjs.com/package/python-shell)

#3.環境設定、インストール

Python-shellを使うための事前準備やインストール方法を説明します。
node.jsとpythonは既にインストール済とします。

環境
・ubuntu 18.04 on Raspberry pi4 (Docker)
・node.js v12.14.0
・npm 6.13.4

##

元記事を表示

Node.js Gmail送信

#はじめに
Gmailアカウントでメール送信をしたい場合があります。
gmail-sendを利用すると便利です。

#gmail-sendをインストール
`npm install –save gmail-send`

#送信アカウントの設定
“`javascript
const send = require(‘gmail-send’)({
user: ‘xxx@gmail.com’,
pass: ‘xxxアカウントのパスワード’,
to: ‘taro@yahoo.co.jp’,
subject: ‘Gmailからのメール送信確認の件’,
});
“`

#テキストメールを送信する
“`javascript
send({
text: ‘●●様 \n こちらは2行目です。\n’,
}, (error, result, fullResult) => {
if (error) console.error(error);
console.log(result);
})
“`

#HTML形式メールを送信する
“`javascript
send

元記事を表示

docker-lambda – AWS Lambda の開発効率を爆アゲする

## 要約

– AWS Lambda の Function を実装するときは **docker-lambda** を使用すると開発スピードが上がる。
– Docker コンテナが提供されているので、導入に手間がない。
– AWS Lambda の Function 実行だけでなく、 Deploy package の作成にも便利。

## はじめに

AWS Lambda を使用することが増えてきたのですが、イチイチ AWS アカウントの設定や、 AWS Lambda へのデプロイが手間だと感じていました。そこで、ローカル開発環境上で実行できる方法を探したところ、 [docker-lambda](https://github.com/lambci/docker-lambda) なるものの存在を知ったのでお試ししてみました。

## 概要

本記事の概要は次の通りです。

### 書くこと

– docker-lambda の導入方法
– docker-lambda の実行方法(Node.js版)
– AWS Lambda へのデプロイ用パッケージを作成する方法

### 書かないこと

元記事を表示

初心者がGitHubでJavaScriptのコードを書き換えるまでにやったこと

笹澤さんのところでプログラミング開発の練習をさせていただいている、茨城大学の浅野です。

GitHubなどは全くの初心者であった自分が、GitHubでJavaScriptのコードを書き換えるまでに至った流れを書いておきます。

可能な限りGitHub初心者の人にも伝わる言葉で書くことを目標に頑張ります。
#1. そもそもGitHubって何って話から
GitHub(ギットハブ)って何だろうというところから始めます。

GitHubとは…

「GitのHub」です。

怒らないでください。

でもこの認識結構大事みたいで、GitとGitHubってどうやら違うみたいなんです。
##1.1. Gitとは「みんなで編集しやすいシステム」
仕切り直して、Gitって何だろうというところから始めます。

Gitとは「みんなで一つのファイルを編集しやすいようにしてくれるシステム」のことです。

ファイルでは説明しづらいので、みんなで小説を書くことを考えてみます。

##1.2. 小説をみんなで書くことで考えるGit
Aさん、Bさん、Cさんの3人で一つの小説を書きあげることを考えます。

Aさんが導入

元記事を表示

React & バックエンド処理の画面をとりあえず公開するまで

# やりたいこと
Reactを使ったフロント側と、バックエンドとの連携処理を最低限動かし、Herokuで公開するまでをメモします。
千里の道も一歩から。

# 全体イメージ
ローカルでの全体イメージは以下です。
Reactはフロントエンドのフレームワークなので、サーバサイドのバックエンド処理は別物として分離してしまったほうが分かりやすそうです。
![SnapCrab_NoName_2019-12-26_23-11-19_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114715/238c701e-0bcc-5551-16fc-4bf2cedd8fa6.png)

# 手順
## 前提
以下ができていることを前提にします。

– [Node.js](https://nodejs.org/en/download/)がローカルにインストールされていること
– [Github](https://github.com/)と[Heroku](https://jp.heroku.com/)のアカウントを持

元記事を表示

【IBM Watson】AIが性格を推定してくれるPersonality Insigthtsデモサイトの構築方法 (Node.js編)

皆さん、こんにちは。戸倉彩です。

今回は今すぐ使えるIBM Watson Personality Insights APIのサービスを使用した、テキストやTwitterのツイートを分析するWebアプリケーションを開発する方法を紹介します。パブリッククラウドのサービスを使用しますが、無料の範囲で作成することができるので、自己学習やコミュニティのハンズオン等の題材に迷った時には役立てていただければと思います。

# IBM Watson Personality Insights (性格分析)とは
**Personality Insights**は、IBMが提供しているIBM Watsonサービスの一つで、テキストから筆者のパーソナリティ(ビッグ・ファイブ、価値、ニーズ)の3つの特徴をAIから推測します。詳細については**[IBM Watson Personality Insights 公式サイト](https://www.ibm.com/watson/jp-ja/developercloud/personality-insights.html)**をご覧ください。

# Personal

元記事を表示

単一リポジトリ内の複数のpackageで共通の型を使い、さらに型をpackage化

# 概要
小規模のサーバーサイド・フロントエンドのように、
マルチパッケージを含む構成のリポジトリにおいて・・・

“`
root
├── functions
│ └── package.json // サーバーサイドの package
└── hosting
└── package.json // フロントエンドの package
“`

以下を満たすためのメモです。

– functions, hosting から単一の型定義を使う
– `root-types` package として、型を export する
– ここでexportした型を、外部のプロジェクトからも使えるようにする

## 最終形態
上記の条件を満たすリポジトリの最終形です

“`
root
├── package.json // root-types package
├── types
| ├── dist // root-types としての配布物
| ├── src // root-types の実装
| | ├── index.

元記事を表示

firebase データ取得にfor文を使いつつ、その中で非同期処理する方法

この記事は、どっかからAPIをとってきたデータを、firebaseのデータ群と比較参照する場合、
非同期処理とfor文をどうやって組み合わせれば良いかというところにいつも引っかかっていてしまっていたので、その備忘録です。

## 環境
– Node.js
– Cloud firestore

## どんな問題なのか
firestore にあるcollection からデータを全てとってくる場合、下記の例のように、`forEach`を使ってとってくるのが普通です。

“`js
var query = db.collection(‘contents’).get();
query
.then(function(snapshot) {
snapshot.forEach(function(childSnapshot) {
… // childsnapshot の処理
});
});
“`

しかし、この`forEach`文の中、つまり、`childsnapshot`の処理の中に、時間がかかる関数を呼び出していて非同期処理をする必要があるとなった場合、
**`f

元記事を表示

MNISTのデータベースをJSONで得る

MNISTのWebサイトで配布されている手書き数字のデータは、バイナリ形式です。これを、JSONデータに変換する方法をメモしました。

http://yann.lecun.com/exdb/mnist/

DBをダウンロードして、解凍します。

“`js:mnistdb2json.js
// MNIST手書きデータをJSONに変換する for Node.js

const CONV_LIMIT = 5000 // 小さなJSONを作成する場合

// サンプルファイルの保存先を指定
var DIR_IMAGE = __dirname + “/image”;

// モジュールの取り込み
var fs = require(‘fs’);

// 変換処理
convertToJSON(“train”);
convertToJSON(“t10k”);

function convertToJSON(basename) {
console.log(“convert: ” + basename);
// 各種ファイル名を決定
var file_images = basename

元記事を表示

全世界の夜更かしさんに送る、Google Home(mini) + Nature Remo + 鯖(Synology NAS) + Node.jsでつくる夜更かし防止装置のすヽめ(google-home-notifier未使用)

# はじめに
ついつい夜更かしをしてしまうの方に向けにGoogle HomeとNature Remoを組み合わせて**「指定した時間以降、部屋が明るければGoogle Homeより早く寝るように警告を発する装置」**をNode.jsで実装する作例をご紹介します!!
市販品を組み合わせるだけなのでお手頃に作れます!!(たぶん)

ちなみに似たような作例はよくありますが、多くの記事では**「google-home-notifier」**と呼ばれるGoole Homeに簡単にプッシュ発話をさせるライブラリが使われており、google-ttsの仕様に依存していたり、バグが多かったりして動かないことが多いのでなるべく根本ロジックから実装する方法でやっていきます。

### 構成
![プレゼンテーション1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57833/38a65fd7-f35b-6cb2-aad3-db97d179cdbb.png)

# 必要なもの
### Nature Remo
所謂スマートリ

元記事を表示

Macにnode.jsとnpmをinstallする

# 目的
MACにnode.jsとnpmをinstallする

# 環境
MAC OS Catalina 10.15.2で実施

# 作業ログ
“`bash:bash
# xcodeのinstall (gccのinstallに必要)
$ xcode-select –install

# gccのinstall (nodebrewのinstallに必要)
$ brew install gcc

# nodebrewのinstall
$ brew install nodebrew

# nodebrewでinstallされるファイルが格納されるdirectoryを作成
$ mkdir -p ~/.nodebrew/src
$ nodebrew install-binary stable

# currentの表示されるのが使うversion
$ nodebrew list
v12.14.0

current: none

# stableを使うと指定
$ nodebrew use stable
use v12.14.0

# node.jsのversion確認
$ node -v
v1

元記事を表示

pm2でdeployしようとするとbash: npx: command not foundで失敗する

## 原因
– bash_profileにnvmの設定を記述していた
– bash_profileは対話モードじゃないと読み込まれない
[参考](https://qiita.com/dark-space/items/cf25001f89c41341a9fd#bash_profile%E3%81%A8bashrc%E3%81%A7%E5%B7%AE%E3%81%8C%E5%87%BA%E3%82%8B%E3%82%BF%E3%82%A4%E3%83%9F%E3%83%B3%E3%82%B0)
– しょうがないので/usr/local以下のnvmとは関係ない古いnpmが呼ばれる

→npxコマンドが存在しない

## 現状
ecosystem.json

“`json
“deploy” : {
“production” : {
“user” : “dev”,
“host” : “**********”,
“ref” : “origin/master”,
“repo” : “**********”,
“path” :

元記事を表示

正規表現を使った処理で、いい感じの場所に区切り文字を入れる

# モチベ
繋がってしまった文字列でいい感じのところに区切り文字を入れたいことってありますよね(?)
自分の場合は繋がってしまった時間帯の表記を、1区間ごとにカンマで区切りたいなーっていうタイミングがありました。
処理前 `13:00~15:0017:00~22:309:00~23:00`
処理後 `13:00~15:00,17:00~22:30,9:00~23:00`

区切りたいところに特定の文字があれば、JSだったら[replace()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace)とか[split()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split)を使って簡単に区切り文字を入れ替えたり、配列にしたりできます。

# まず思いついた方法
今回の場合、上記なような考え方ができないため他の方法をとる必要があ

元記事を表示

LINE Payのオンライン決済を実装する前に知りたかったハマりどころ

LINE Payのオンライン決済を実装する機会があったので主なハマりどころを共有します。

# Transaction IDが丸められる
決済要求のためにRequest APIを呼ぶ必要があるのですが、このAPIから返ってくるTransaction IDは19桁の数値で返ってきます。
> 決済要求の結果として受け取った取引番号(19桁)
> https://pay.line.me/documents/online_v3_ja.html#confirm-api

19桁の巨大な数値なので、そのまま受け取ってしまうと丸められてしまう可能性があります。
その後のConfirm APIにTransaction IDを渡す必要があるのですが、丸められていると当然違う値なので「決済要求情報が存在しません。」となり決済が出来ません。
丸められていることに気づくまでかなりの時間を要しました。文字列で返すなどアップデートで対応してほしいところです。

JavaScriptで書かれたLINE Payのライブラリがあるのですが、こちらではlossless-jsonを利用してこの問題に対応しているようです。

元記事を表示

[JavaScript][ES2017]0埋め(ゼロパディング)をするシンプルな記法(padStart, padEnd)

## 概要
ググるとまず`slice()`を使う方法が出てくるが、ES2017が使える環境ならば`padStart()`の方が良い。

Node.jsならば8.0.0から使用可能。

## 使い方
一つ目の引数にパディング後の桁数、二つ目にパディングに使う文字(デフォルトは半角スペース)を指定する。

“`javascript
> ‘123’.padStart(5)
‘ 123’

> ‘123’.padStart(5, ‘0’)
‘00123’

> ‘123’.padStart(10, ‘*’)
‘*******123’
“`

右側を埋める`padEnd()`もある。

“`javascript
> ‘123’.padEnd(5, ‘0’)
‘12300’
“`

## ドキュメント
* https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
* https://developer.mozilla.org/ja/docs/Web/Jav

元記事を表示

Node.jsの”Error: Cannot find module ‘cfn-response'”の解決方法

# Error: Cannot find module ‘cfn-response’
Lambda-Backedカスタムリソースにおいて、Node.js 8がEOLとなるため、コードはそのままでランタイムの指定だけをNode.js 12.xに変更したところ、このようなエラーが発生しました。

“`エラーメッセージ
Response:
{
“errorType”: “Runtime.ImportModuleError”,
“errorMessage”: “Error: Cannot find module ‘cfn-response'”,
“trace”: [
“Runtime.ImportModuleError: Error: Cannot find module ‘cfn-response'”,
云々
“`

Node.js 8では以下の指定で同じ階層のファイルrequireできるのですが、

“`Node.js8:
const response = require(‘cfn-response’);
“`

Node.js 12では、パスを明記する必

元記事を表示

OTHERカテゴリの最新記事