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

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

Puppeteerでexampleコードsearch.jsを試すときにハマったこと(動的サイトのセレクタ確認、Headless解除でのデバッグ)

# はじめに
スクレイピングをnode.jsでできるPuppeteer(スペルミス多発)を初心者が使ってみたところ、
私的なハマりどころが複数あったので備忘録として残します。

## ハマりポイント(順番に)
1. search.jsは2018年に作成されたものなので、一部スクレイピング対象サイトのセレクタが変わっていた。
2. 検索窓に入力した際のポップアウトが動的で、developer toolでDOMをelementを見つけるのに苦労した。
3. レスポンシブデザインのbreakpointのサイズを考えずに組んでいたので、Headlessで立ち上がっているChromeと挙動の差異があったことに気付いていなかった(Navigation Drawerが出てきてしまっていた)。

## 解決策
1. ちゃんとdeveloper toolでelementを確認する。
2. JavaScriptのdebugと同じ要領でBreakpointを設定してポップアウトが出た瞬間に止めて、elementを確認する。
3. Headlessモードを解除し、実際にChromeが動いている様子を確認して

元記事を表示

Node.jsを使ってHTTPサーバを作ってみる

#はじめに
この記事はなんとなくJSとかを勉強している学生がメモ代わりに書いているものです。内容は期待しないでください。

#1.仮想環境を構築する
今回はUbuntuで行うのでiTerm2で仮想環境を起動する。

起動したところで
1.Virtual Box(バーチャルボックス)
2.Vagrant(ベイグラント)
という2つのソフトウェアを使った仮想環境でUbuntuを使用します。
cd ~/vagrant/ubuntu
vagrant up
vagrant ssh

Ubuntuがインストールされたディレクトリに移動。vagrant upは仮想的なPCにインストールされたUbuntuを起動するコマンドで,vagrant sshはVagrantの仮想マシンがセットされている状態でSSHに接続します。

#2.プログラムのひな形(テンプレート)を用意する
ディレクトリ内に以下を記述します。
“`yarn init
echo “‘use strict’;” > ファイル名
“`

1行目はyarnで新しいプロジェクトを始める際に記述するものです。

#3.プログラムを書く
先ほど記

元記事を表示

LINEBotをみんなで作ろう〜環境構築編〜【GWアドベントカレンダー1日目】

この記事は下記の [#GWアドベントカレンダー](https://gw-advent.9wick.com/calendars/2020/72) の 1日目の記事になります。

楽しそうなのでやってみる!( @inoue2002 ) | GWアドベントカレンダー

# はじめに
#####全く触った事がない人でも読み進められる記事を目指して、「実際に動くもの」を作ることを重視して解説をしていきます。
最初は環境構築から始め、最終的にはサーバレスで動くLINEBotを作成し、色々な物を作ってもらえたら嬉しいです。
僕の持っている知識を全部書いていこうと思いますのでよろしくお願いします!
もし誤表記やっ訂正すべき点がある場合、コメントいただけると幸いです。
あと、基本的にはMac環境で説明していきますのでよろしくお願いします。
では1週間よろしくお願いします!

#今日やる事
・[LINE Developerのサイト](https://developers.line.biz/console/)にログインできるようにする。
・[ngrok](https://ngrok.com/)をインストー

元記事を表示

Boxウェブアプリ統合を作ってみた

## 今回作るもの

Boxのウェブアプリ統合をnode.jsで作ってみます。

ウェブアプリ統合とは、標準のBoxの画面にボタンを表示し、そのボタンをクリックしたら外部で連携されたアプリケーションが何らかの処理を行うという仕掛けのことです。

Boxのテナントの設定にもよりますが、DocuSignなど、予めおすすめのボタンがいくつかついていたりします。あのボタンは自前で追加可能です。

今回は、任意のファイルを、3分間ロックしてダウンロードも禁止にするという使いみちのないウェブアプリ統合を作ってみます。Boxにはそもそも編集中に他人からファイルを変更されないように悲観ロックを行う機能がついているのですが、単純にこの機能を外部から利用してロックをかけるというものを作ってみます。

## 仕組み

基本的なしくみとしては以下のような流れです。

1. 外部に自前のカスタムアプリケーション・サーバーを用意する。
2. Boxの開発者コンソールからアプリの登録をし、ウェブアプリ統合を有効にする。
3. Boxの画面からウェブアプリ統合のボタンを押すと、カスタムアプリケーション・サーバーにH

元記事を表示

都道府県名を都道府県コードに変換

都道府県名を次で定義されている都道府県コードに変換する方法です。
[都道府県コード](http://nlftp.mlit.go.jp/ksj/gml/codelist/PrefCd.html)

変換に使うJSONファイル

“`json:prefecture.json
{
“北海道”: 1,
“青森県”: 2,
“岩手県”: 3,
“宮城県”: 4,
“秋田県”: 5,
“山形県”: 6,
“福島県”: 7,
“茨城県”: 8,
“栃木県”: 9,
“群馬県”: 10,
“埼玉県”: 11,
“千葉県”: 12,
“東京都”: 13,
“神奈川県”: 14,
“新潟県”: 15,
“富山県”: 16,
“石川県”: 17,
“福井県”: 18,
“山梨県”: 19,
“長野県”: 20,
“岐阜県”: 21,
“静岡県”: 22,
“愛知県”: 23,
“三重県”: 24,
“滋賀県”: 25,
“京都府”: 26,
“大阪府”: 27,
“兵庫県”: 28,
“奈良

元記事を表示

Expressでのエラーハンドリング ベストプラクティス

[Express公式サイトのベストプラクティス](https://expressjs.com/ja/advanced/best-practice-performance.html)には、パフォーマンスと信頼性についてのベストプラクティスが解説されています。

その中で、適切なエラーハンドリングのベストプラクティスについて解説されています。

Express(Node.js)では発生したエラーがキャッチされないと、プロセスが異常終了したりハングしてしまいます。そうなると、Epxressアプリケーションの信頼性(可用性)が地に落ちてしまいます。このようにエラーハンドリングの適切さは信頼性に大きく影響するため、エラーハンドリングはとっても重要なのです。

今回の投稿では、Express公式サイト(と、そこからリンクされる参考ページ)で紹介されているエラーハンドリングのベストプラクティスを、できるだけ分かりやすく説明させていだこうと思います。

まずはアンチパターンいついて説明します。

# Expressにおけるエラーハンドリング【アンチパターン】

### その①:コールバック関数で、手動

元記事を表示

Amplify CLIがamplify: command not foundで進まない件

#結論:PATHが通ってませんでした

この記事はamplify -vとかしても

amplify: command not found

と出てしまう人向けです。

まずは

“`
npm config get prefix
“`

でnpmモジュールのインストール先を確認します。
ここでは /Users/hogehoge/.global とします。
次に

“`
echo $PATH
“`

として、その中に先程のパスが含まれているか確認。多分含まれていないはず。

あとは

“`
export PATH=$HOME/.global:$PATH
“`

としてパスを追加。
これでnpmでインストールしたモジュールまでパスが通ったので
amplifyのコマンドが通るようになります。

元記事を表示

Commit Message / Pull Request Titleを美しく保つ方法

初投稿なので変な点があったら気軽にご指摘ください。

# TL;DR

[commitlint](https://commitlint.js.org)と[Commitizen](https://github.com/commitizen/cz-cli)、[Semantic Pull Request](https://github.com/zeke/semantic-pull-requests)を用いて[Convential](https://www.conventionalcommits.org/ja/v1.0.0/)なメッセージを書こう。

# はじめに

皆さんはコミットメッセージを普段どのように書いているでしょうか?人には人それぞれのコミットメッセージの書き方があると思います。しかしコミットメッセージの書き方が人によってバラバラだと非常に見にくいものとなってしまいます。

そのための規約が[Conventional Commits](https://www.conventionalcommits.org/ja/v1.0.0/)です。

> Conventional Commits

元記事を表示

herokuでnodeアプリをデプロイする

個人的な作業メモ。チュートリアルをなぞっただけです。

https://cli-assets.heroku.com/heroku.pkg からCLIのインストーラーをダウンロードして実行。

“`
$ heroku –version
› Warning: heroku update available from 7.35.0 to 7.39.5.
heroku/7.35.0 darwin-x64 node-v12.13.0
“`

アップデートできるようなのでしおく。

“`
$ heroku update
heroku: Updating CLI from 7.35.0 to 7.39.5… done
heroku: Updating CLI… done
“`

herokuにログインする。

“`
$ heroku login
heroku: Press any key to open up the browser to login or q to exit:
“`

何らかのキーを押すとブラウザが開く。

![スクリーンショット 2020-04-29

元記事を表示

【Node.js】SequelizeのDB接続情報を環境変数で管理する

# 経緯
Sequelizeのデフォルトは `config.json` というファイル内でDBへの接続情報を管理しているので、 `.env` などの環境変数で管理したかった。

# 結論
`config/config.json` の中身を以下のようにモジュール化して、拡張子を `.js` に変更する。

`dotenv` で環境変数を読み込む。

“` config.js
require(‘dotenv’).config();

module.exports = {
‘development’: {
‘username’: process.env.DB_USERNAME,
‘password’: process.env.DB_PASS,
‘database’: process.env.DB_DATABASE,
‘host’: process.env.DB_HOST,
‘port’: ‘3306’,
‘dialect’: ‘mysql’,
‘operatorsAliases’: false,
},
};
“`

`mod

元記事を表示

【Node.js】Dockerで作成したMySQLをDUMPする

# 経緯
Docker-composeで作成したMySQLのデータをAmazonRDSに移行する必要があった。

# 結論

## Dockerコンテナで作成したMySQLデータをRDSなどの外部サーバーに移行する

エクスポート時

“`
$ docker exec コンテナ名 mysqldump –default-character-set=文字コード(utfmb4など) -u ユーザ名 -p パスワード データベース名 > backup.sql
“`

インポート時

“`
mysql –default-character-set=文字コード -h エンドポイント(AmazonRDSの場合) -P 3306 -u admin -p データベース名 < backup.sql ``` ## Sequelize(Node.jsのORM)を使ってスキーマを作成していた場合 エクスポート時 ``` $ docker exec コンテナ名 mysqldump --skip-lock-tables --default-character-set=文字コード(utfmb4など)

元記事を表示

Hubotを使ってみた

#はじめに
この記事はなんとなくJSとかを勉強している学生がメモ代わりに書いているものです。内容は期待しないでください。

#1.仮想環境を開く
今回はUbuntuで行うのでiTerm2で仮想環境を起動する。

起動したところで
1.Virtual Box(バーチャルボックス)
2.Vagrant(ベイグラント)
という2つのソフトウェアを使った仮想環境でUbuntuを使用します。
cd ~/vagrant/ubuntu
vagrant up
vagrant ssh

Ubuntuがインストールされたディレクトリに移動。vagrant upは仮想的なPCにインストールされたUbuntuを起動するコマンドで,vagrant sshはVagrantの仮想マシンがセットされている状態でSSHに接続します。

#2.botを作る上で必要なモジュールをインストールする

“`npm install -g hubot yo generator-hubot coffee-script
“`
yoとはYeomanという雛形作成ツールです。
generator-hubotはHubot のためのYeo

元記事を表示

Node.js を使ってファイルからデータを読み取ってみた。

#はじめに
この記事はなんとなくJSとかを勉強している学生がメモ代わりに記録しているものです。内容は期待しないでください。

#仮想環境を開く
今回はUbuntuで行うのでiTerm2で仮想環境を起動する。

起動したところで
1.Virtual Box(バーチャルボックス)
2.Vagrant(ベイグラント)
という2つのソフトウェアを使った仮想環境でUbuntuを使用します。
cd ~/vagrant/ubuntu
vagrant up
vagrant ssh

Ubuntuがインストールされたディレクトリに移動。vagrant upは仮想的なPCにインストールされたUbuntuを起動するコマンドで,vagrant sshはVagrantの仮想マシンがセットされている状態でSSHに接続します。

#1.ファイルから読み取るプログラムを書く
“`javascript

‘use strict’;
const filesystem=require(‘fs’);
const readline=require(‘readline’);
const rs =fs.createReadStr

元記事を表示

Raspberry Pi に東京都の新型コロナウイルス感染症対策サイトをインストール

東京都の新型コロナウイルス感染症対策サイトを Raspberry Pi にインストールする方法です。

必要なソフトのインストール

Node.js

“`bash
sudo curl -sL https://deb.nodesource.com/setup_12.x | bash –
sudo apt install -y nodejs
“`

インストールされたバージョン

“`text
$ node –version
v12.16.2
“`

yarn

“`bash
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add –
echo “deb https://dl.yarnpkg.com/debian/ stable main” | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install yarn
“`

インストールされたバージョン

“`text
$ yarn –version

元記事を表示

node v12でのnode-gyp rebuildでのエラー

## 環境
macOS Catalina(10.15.4)
node.js v12.16.2

## 発生した問題
`gatsby new`をしようとしたところ以下のようなエラーが発生。

“`
error /Users/gedyra/blog/node_modules/sharp: Command failed.
Exit code: 1
Command: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
Arguments:
Directory: /Users/gedyra/blog/node_modules/sharp
Output:
info sharp Using cached /Users/gedyra/.npm/_libvips/libvips-8.7.0-darwin-x64.tar.gz
(中略)
In file included from ../../nan/nan_converters

元記事を表示

仮想環境でNode.jsを始めた

#はじめに
この記事はなんとなくJSとかを勉強している学生がメモ代わりに記録しているものです。内容は期待しないでください。

#仮想環境でコンソールを起動する
今回はUbuntuで行うのでiTerm2で仮想環境を起動するよ。

起動したところで
1.Virtual Box(バーチャルボックス)
2.Vagrant(ベイグラント)
という2つのソフトウェアを使った仮想環境でUbuntuを使用します。
cd ~/vagrant/ubuntu
vagrant up
vagrant ssh

Ubuntuがインストールされたディレクトリに移動。vagrant upは仮想的なPCにインストールされたUbuntuを起動するコマンドで,vagrant sshはVagrantの仮想マシンがセットされている状態でSSHに接続します。

#Node.jsを使ってみる
コンソールに
“`node
“`
と入力すると,コンソールがjsを受け付ける状態になります。これはREPLという状態です。
今回実装するディレクトリに保存しているnode.jsのファイルを以下に記述します。
“`’use strict’

元記事を表示

Herokuへのアップロードでつまづいた時の対処法 その② Node.js + MongoDB

先日記述した「Herokuへのアップロードでつまづいた時の対処法」の後編になります。なお、タイトル通りMongoDBを使っていない場合には、この後編を参考にする必要はありません。前編に引き続き、これを見た未来の困っている人たちの手助けになれば嬉しいです。それでは順を追って説明していきます。

前編で記述したprocfileの作成方法や.gitignoreの作成方法をすでに行っている前提で話していきます。

1:HerokuでMongoDBのアドオンを使用するためには、Herokuでクレジットカード情報を登録する必要があります。ただし、お金は一切かかりませんし、メルマガなどの勧誘もありません。登録方法はこちらの方の記事を参考にしてみてください。?https://wp.developapp.net/?p=5250
大体4-5分でできます。

2:登録が完了したらHeroku上の自分のアプリケーション画面に移動します。?https://dashboard.heroku.com/apps

3:今回Herokuへアップロードするアプリを選択しクリックする。

4:画面の上部に表示されて

元記事を表示

knexでdistinct onする方法

>特定のカラムだけdistinctしてーーー!
そしてdistinctしたカラム以外も取得してーーーー!

って時、極稀にありますよね。
RDBに多少でも触れる人生なら一生に3回くらいは遭遇するはずです。

エンジニア歴10年超えにしてやっと実運用ProductでPostgresデビューした私にも、人生で3回遭遇するうちの第一回目が来ました。

knexのドキュメント見てもですね。
「distinct on」サポートしてないんですよ。

http://knexjs.org/

distinct on なにそれ?おいしいの?くらいの勢いでカレーにスルーされてるんです。
Postgresの方言らしいので仕方ないのかな。。

もうこういったRDB固有の方言は、raw使うしか無いようですロー

## knexでdistinct on するには”raw”を使う
“`
knex.select(knex.raw(‘DISTINCT ON (target_colum) target_colum1, other_colum2, other_colum2)
“`

こうすると、target_colu

元記事を表示

amazon-qldb-driver-nodejsからQLDBを使う②(書き込み、検索編)

前回の記事はこちらです
https://qiita.com/shushutochako/items/bbb3ec5f721c57949ea7

## 概要

今回はテーブルへのデータの追加、更新と検索を試してみたいと思います。
AWSの認証などについては前回の記事を参考にして下さい。

また、本記事は公式チュートリアルの内容を参考にしています。
https://docs.aws.amazon.com/qldb/latest/developerguide/getting-started.nodejs.tutorial.html

## moduleのバージョン

今回使用した「amazon-qldb-driver-nodejs」自体や他に必要なモジュールのバージョンは以下のとおりです。
前回の記事の時点ではpreviewでしたが、2020/4のはじめにPre-release版がリリースされたようですね!
正式なリリースも近いのではないでしょうか。

– amazon-qldb-driver-nodejs
– v1.0.0-rc.1
– aws-sdk
– 2.663.0
– io

元記事を表示

【メモ】Raspberry Pi に node をインストール

* Raspberry Pi Model B Plus Rev 1.2

# tj/n をインストール

* [tj/n](https://github.com/tj/n)

“`
$ curl -L https://git.io/n-install | bash
“`

元記事を表示

OTHERカテゴリの最新記事