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

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

nodeの便利なsqlビルダー、squelの使い方まとめ

##環境
node:v8.11.3

##squelとは
メソッドチェーンやって、sqlを組み立てられる便利なnodeモジュール。
sqlを直書きしていると、他の人が見て分かりにくいものになってしまうので、sqlビルダーを使います。

僕、フレームワークとか使う前までは直書きしていて、
当時は、文字列連結でandを作っていたので何回もやり直した記憶がある。。。

larabelみたいな便利なフレームワークにはクエリビルダとかあったりするけど、今回はnodeなので、nodeのモジュールの力を借りる。

## 準備
●まず、インストール。
npmから、squelをインストールするだけ。
これは動作に必要なモジュールなので、–saveつける。

●使い方
以下に書いたが、メソッドチェーンでfromやintoなどを直感的に指定できる。

## selectを使った例
where()の中に、「squel.expr().and().and()」のように、拡張というか、追加で条件が書ける。
and()がいけるということは、もちろんor()もいける。

複数の条件の中で一部の条件に対して括弧

元記事を表示

できるだけasync/awaitを使わないほうがよくて、promsie/thenをつかったほうがいい

##環境
node:v8.11.3

##非同期処理について
nodeを使ってapi作ってるときに、routeからサービスに行って次にdaoに行って~みたいな流れの中で、比較的少し時間がかかるDB処理や物理ファイル関連の処理やADサーバの処理とかで順番に処理をさせるために関数を非同期にしてawait使っていたんだけど、
それだと全ての関数にasyncつけなきゃいけなかったり、awaitつける必要が出てくるので、いろいろ面倒になってくる。

当然、daoの部分が非同期関数なら、それを呼び出すサービスの関数の中でawaitをつける必要があり、awaitを使う関数もまた非同期にしなきゃいけなくて、またその関数を呼び出す関数も非同期にしなきゃいけなくなってしまうってことになる。
つまり、コントローラー、サービス、リポジトリ全て非同期になってしまう。

awaitつけて呼び出そうとしたら、「ここ非同期じゃないやんけ。。。」って怒られてasyncのつけ忘れを直す機会がしばしばあるのが面倒だけど、個人的にはそんな嫌いじゃない。でもどいつもこいつも非同期になるのはなんか気持ち悪いですねぇ。。。(至言)

元記事を表示

Windowsでgulpの環境構築。yarn編

#yarnでgulpの環境構築
gulpの環構築の時にサラッと出来るように自分用に投稿。
完璧に初心者なのであしからず

※ちなみにyarnもgulpもnodeもインストール済みとして書きます。

##環境
・yarn
1.21.1
・gulp
CLI version: 2.2.0
Local version: 4.0.2 `
・node(楽だからnodistで管理したほうがいいかも)
v11.13.0

##手順
test(任意)フォルダの中に移動します

“`
C:\Users\(ユーザー名) > CD test
“`

“`
C:\Users\(ユーザー名)\test >
“`
ちなみにtestフォルダの中は下記になります

“`
test─┬─css
├─scss
│ └─main.scss
└─index.html
“`
package.jsonを生成しないとダメなので下記を実行

“`
C:\Users\(ユーザー名)\test > yarn init
“`
実行すると色々聞かれるけどエンター連打。
そうすると

元記事を表示

Nodejs(TypeScript)とcacとinquirer.jsでサクッとCLIを作成する

# はじめに

NodejsでCLIツールを作成するときに良さそうなパッケージを見つけて、実際に使ってみたら良かったので紹介していきます。

## 使ったパッケージ

### cac

シンプルでパワフルなコマンドラインインターフェイスを作るためのフレームワーク

[https://www.npmjs.com/package/cac](https://www.npmjs.com/package/cac)

### inquirer.js

対話型のインターフェースを組み込むのに便利

[https://www.npmjs.com/package/inquirer](https://www.npmjs.com/package/inquirer)

## インストール

“`terminal
$ npm i cac inquirer
$ npm i –save-dev @types/inquirer
“`

## サンプル

`cac` を使ってCLIの骨組みを書いていきます。
下記の例では `cli hello hoge` みたいなコマンドを入力されたときに処理が実行されるようにし

元記事を表示

Knexあれこれ(雑多メモ)

# はじめに(次の見出しまで飛ばしてOK)

最近仕事に対する楽しみ方を意識するようになり、今のつまらない仕事が続くのも嫌だったので、6月で辞めますと退職連絡を済ませてきた。
コーディングしてる最中はプライベートでも仕事でも楽しいので、コードをびっしり書くような会社に転職したいと思ったが、個人での活動実績はない。
とりあえず就活に繋がる作品を何か作ってみようと思い立ちこれ1本で大体何とか済ませちゃうNode.jsの勉強を1週間前に始めた。
が、DB処理があまり好きになれなかった。

適当に買った参考書に書いてたDB処理は以下のようなもの

“`JavaScript:sql.js
connection.query(‘SELECT * FROM hoge ‘, function (error, results, fields) { //取得結果に対する処理 });
“`
新卒配属された闇プロジェクトのシステム構成がこれに近い形式で実装されていたことが大体の原因ではあるが。

# 便利なnpmパッケージ Knex
PHP/Laravelあたりに言語/フレームワークを変更しようかなとこっそ

元記事を表示

Node12系 AWS LambdaでHTMLをPDFに変換しようとしたらいろいろハマった

Node8系でwkhtmktopdfを使ってHTMLをPDFに変換するLambdaを使っていたのだが、Node8系で動いていた。
Node8系がサポートされなくなるということで、12系にそのままあげたら動かなくなってしまったのでNode12系でHTMLをPDFに変換するLambdaを作り直す必要が出てきた。

HTMLをPDFに変換するLambdaについては結構多くの記事が見つかったが、なかなか上手くいかなかった。

# やりたかったこと
Lambdaで日本語を含むHTMLをPDFに変換し、S3に保存する

#試したが上手くいかなかった方法
* wkhtmlpdf
* 自分が見つけられなかっただけかもしれないが、Node12系でも問題なく動くソースを見つけられなかった
* html-pdf
* phantomjsの128エラーでちっとも動かなかった
* puppeteer
* 動きそうな気配はあったが、node_modulesのサイズが大きすぎてLambdaの最大ソースサイズをオーバーしてしまった

# 上手く行った方法
## 使用モジュール
[chrome-a

元記事を表示

Vue.js勉強会に参加してみた

## はじめに
WantedlyでVue.jsの勉強会を見つけたので、参加してきました。
Vue.jsは前々から勉強しようと思っていたのですが、後回しになっていたので、これを機会に本腰を入れよう!

## 環境構築
今回、事前に環境構築をしてきてとお願いされたのは以下のもの

– Visual Studio Code
– 拡張機能でVetur(Vue.js用の拡張機能)もインストール
– githubアカウント
– Node.js
– versionは10以上
– git
– versionは2.20以上

このうち、(僕のパソコンはWindowsなこともあり)Node.jsとgitのインストールを行いました。

### nodistのインストール
WindowsでNode.jsのバージョンを管理するには、nodistを使うらしい。
インターン先ではnodebrewを使っていたので、「あれ?」と思ったが、nodebrewは基本的にmac環境で使っているそうです。

以下のサイトの手順通りに進めました。
[[Node.js] Node.js の導入(Windows編)](

元記事を表示

nodebrewからnodenv with anyenvに乗り換える

## 概要

ディレクトリごとにnodeのバージョンを変えたい状況になって、
nodebrewだと難しそうだからnodenvに乗り換えるついでにanyenv入れちゃおうって話。

## nodebrewのアンインストール

– `brew uninstall nodebrew`
– `.nodebrew`フォルダを削除する。
– PATHからnodebrewを削除する。

### 参考

[Nodebrew本体を削除する方法 – Qiita](https://qiita.com/tonkotsuboy_com/items/f5d17f0b9698554a7716)

## anyenvのインストール

“`
# homebrew
brew install anyenv

# .bash_profile
anyenv init
echo ‘eval “$(anyenv init -)”‘ >> ~/.bash_profile
exec $SHELL -l

# initialize manifest
anyenv install –init
“`

### 参考

– [GitHu

元記事を表示

【動画付き】 draw.io 使い方まとめ 〜エンジニアでなくても使えるTips集〜

title

[draw.io](https://www.draw.io/) はブラウザを使用してフローチャート、プロセス図、組織図、UML 図、ER モデル、ネットワーク図などを作成できる優れたツールです。作成した図は xml ファイルとして保存でき、GitHub との連携もシームレスに行われます。3 年ほど愛用しているツールですが、隠された使い方がたくさんあります。すぐに忘れてしまうので取りまとめておきます。

「こんな使い方あるよ!オススメだよ!!」という方はぜひ編集リクエストをいただければ追記していく予定です ?

※ 主に参照している文献は以下、公式ブログは非常に分かりやすいのでオススメです。

– [ツイッター公式アカウント](https://twitter.com/drawio)
– [公式ブログ]

元記事を表示

bullで管理するNodeJSの分散job

# bullとは
NodeJSで分散ジョブとメッセージを処理するためのキューパッケージです。redisをベースに動作します。
kueの後継的なライブラリです。

# 確認環境
– node: v10.17.0
– [redis ( for windows )](https://github.com/microsoftarchive/redis/releases): 3.0.504

# express-generator にてプロジェクト作成
ここでは、`play_node_bull`というプロジェクトで作成します。

“`
npx express-generator play_node_bull
cd play_code_bull
npm install
“`

# bullのインストール

“`
npm install bull
“`

# app.js の編集
app.jsに以下の行を追記します。

“`Diff:App.js
var createError = require(‘http-errors’);
var express = require(‘express

元記事を表示

Node.jsでGoogle Slides内のテキストの書き換え

Google Slides APIをNode.jsから触ってみてます。

* [Node.jsでGoogle Slides APIを触ってみる](https://qiita.com/n0bisuke/items/8a343ca4d8fe2f1bac55)
* [Node.jsでGoogle Slides内のテキストを取得してみる](https://qiita.com/n0bisuke/items/325fbe56a48e7d83e8dc)
* [Node.jsでGoogle Slidesの新規スライド作成](https://qiita.com/n0bisuke/items/1160bb5c524cdaff3342)

の記事の続きです。

## batchUpdate()で更新

[presentations.batchUpdate](https://developers.google.com/slides/reference/rest/v1/presentations/batchUpdate)でどうやら更新ができそうです。

## presentations.batchUpdate

元記事を表示

FirestoreでCollectionを削除する

Firestoreではコレクションを完全に削除するにはその下に紐づいているドキュメントを一個一個全部削除してからそのあと、コレクションを削除しないと、完全に削除できません。

元記事を表示

Node.js の gRPC で Redis のデータを削除 (Delete)

設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。

設定ファイル
>redis_delete.proto
こちらと同じ
[Python の gRPC で Redis のデータを削除 (Delete)](https://qiita.com/ekzemplaro/items/451d253a277d6b9bece6)

サーバープログラム

“`js:redis_delete_server.js
#! /usr/bin/node
// —————————————————————
// redis_delete_server.js
//
// Feb/08/2020
// —————————————————————
var PROTO_PATH = ‘redis_delete.proto’

var grpc = require(‘grpc’)

var protoLoader = requ

元記事を表示

Node.js の gRPC で Redis のデータを更新 (Update)

設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。

設定ファイル
>redis_update.proto
こちらと同じ
[Python の gRPC で Redis のデータを更新 (Update)](https://qiita.com/ekzemplaro/items/1e94293e0471504b0663)

サーバープログラム

“`js:redis_update_server.js
#! /usr/bin/node
// —————————————————————
// redis_update_server.js
//
// Feb/09/2020
// —————————————————————
var PROTO_PATH = ‘redis_update.proto’

var grpc = require(‘grpc’)

var protoLoader = requ

元記事を表示

Node.js の gRPC で Redis のデータを読む (Read)

設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。

設定ファイル
>redis_read.proto
こちらと同じ
[Python の gRPC で Redis のデータを読む (Read)](https://qiita.com/ekzemplaro/items/3216564b385ddba8457e)

サーバープログラム

“`js:redis_read_server.js
#! /usr/bin/node
// —————————————————————
// redis_read_server.js
//
// Feb/08/2020
// —————————————————————
var PROTO_PATH = ‘redis_read.proto’

var grpc = require(‘grpc’)

var protoLoader = require(‘@grpc

元記事を表示

Node.js の gRPC で Redis のデータを作成 (Create)

設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。

設定ファイル
>redis_create.proto
こちらと同じ
[Python の gRPC で Redis のデータを作成 (Create)](https://qiita.com/ekzemplaro/items/f6d7f5e310d45e0bc1d6)

サーバープログラム

“`js:redis_create_server.js
#! /usr/bin/node
// —————————————————————
// redis_create_server.js
//
// Feb/09/2020
// —————————————————————
var PROTO_PATH = ‘redis_create.proto’

var grpc = require(‘grpc’)

var protoLoader = requ

元記事を表示

Electronで作成しているアプリケーションでfirebaseモジュールを使おうとした時に発生するエラーの解決[Failed to load gRPC binary module because it was not installed for the current system]

`% npm i firebase`
を実行して、プログラム内に

“`javascript
const firebase = require(‘firebase’);
“`
を記述し、`% electron .`でアプリを起動した際に

“`
Uncaught Error: Failed to load gRPC binary module because it was not installed for the current system
“`
とgrpcモジュールに関するエラーが表示された。

`% npm i grpc`

を実行したが、今度はgrpcモジュール内に`node_modules/grpc/src/node/extension_binary/electron-v6.0-darwin-x64-unknown/grpc_node.node`というファイルが無いぞとエラーで怒られる。

さらに`node-v72-darwin-x64-unknown/grpc_node.node`ってファイルならあったけどね!`npm rebuild`すると治るかも!と書かれてい

元記事を表示

npmコマンド備忘録

#確認
npm -–version
npm -v
npm version
npm help
npm root
npm bin
npm show パッケージ名
##パッケージ検索
npm search パッケージ名
##リリースされたパッケージのバージョン
npm info パッケージ名 versions
##直接インストールしたパッケージ
npm list –depth=0
##ローカルインストール済みのパッケージのバージョン
npm list (–depth=0)
##グローバルインストール済みのパッケージのバージョン
npm list –depth=0) -g
##未更新のパッケージを確認
npm outdated
##package.jsonに記載されているパッケージのバージョンに更新
npm update
#初期化
npm init
#復元
npm install
#インストール
##グローバル
npm install –g パッケージ名
##ローカル
npm install パッケージ名
##package.json記述
###package.json記述
npm in

元記事を表示

npmモジュールをインポートしてRollupでビルドしたときに○○ is not definedが出たときの対処

[svelte](https://svelte.dev/)を使ってちょっとしたWebアプリを作っているときにハマったのでメモ。

# 環境

– macOS Catalina
– Node v12.15.0
– npm v6.13.4
– rollup.js v1.20.0
– Svelte v3.0.0

# 事象

svelteではクイックスタート用のテンプレートが用意されており、その中でモジュールバンドラとして[Rollup](https://rollupjs.org/)を利用しています([参考](https://github.com/sveltejs/template))。
このテンプレートを元に開発を進めていたところ、特定のnpmモジュールをインポートして動かした際に下記のエラーに遭遇しました。

“`
Uncaught ReferenceError: stream is not defined
“`

`stream`というモジュールは自分が書いたプログラムの中では使っていません。

# 問題点

インポートしたnpmモジュールが内部でNodeのビルトインモジュールを利

元記事を表示

Vueはどこへ消えた?

この物語は、[Vue CLI](https://cli.vuejs.org/)に興味を持ち、[Yarn](https://classic.yarnpkg.com/ja/)を使ってインストールしてみたものの、パスを見失ってしまった哀れな開発者の奮闘の記録です。

## 第1話 WindowsにYarnでVue CLIをインストールする

### 事件編

まずはWindowsに[Node.js](https://nodejs.org/ja/)とYarnをインストールします。使うのは、Windows用のパッケージマネージャ[Chocolatey](https://chocolatey.org/)。

“`
choco install nodejs
choco install yarn
“`

で、[Vue CLI](https://cli.vuejs.org/guide/installation.html)の記述の通り、YarnでVue CLIをインストール。

“`
yarn global add @vue/cli
“`

ちゃんとインストールできたかか確認すると……

“`

元記事を表示

OTHERカテゴリの最新記事