動かざることバグの如し

近づきたいよ 君の理想に

nodejs

ExpressでHTTPリクエストが中断されたのを検知したい

Expressでよく使われてるreq, resの中身はなにか - 動かざることバグの如しの続き 環境 Nodejs 10 Express 4.x やりたいこと 例えば以下のようなExpressを用いたサーバーのコードがあったとする const express = require('express'); const app = express();…

Expressでよく使われてるreq, resの中身はなにか

環境 Nodejs 10 Express 4.x 結論 reqはIncomingMessage resはServerResponse で、nodejsの標準のオブジェクトで別にExpress特有のものではなさそう 経緯 よく見かけるNodejsのHTTPフレームワークことExpressのHello Worldのサンプル const express = requir…

イキって新記法書くとESLintでエラーになる問題

ESLintでPrivate Class Field使うとエラーになる問題 Nodejs v12でようやくクラスでプライベートな変数を持つことができる。 変数が #val のように頭に#をつけるので、初見キモいなって思ったけど以下の詳しい経緯見たら納得した Private Class Field の導入…

Node.js v12でasync/awaitだけでファイルの読み書きをする

結論 正式なLTSになってるわけじゃないけど、本番投入に問題ない仕上がりにはなってる Node.js v12 でfs/promisesがexperimentalでなくなった件 Node.js10からfs Promises APIが実装された。 が、実行すると、 ExperimentalWarning: The fs/promises API is …

Nuxt.jsにCSSフレームワークを導入するまでの手順

環境 Nuxt.js 2.8 背景 Nuxt.jsはVuejsを元に作られているので、CSSフレームワークを追加したいときは、「追加したいCSSフレームワーク vuejs」とかで検索すればインストール方法がすぐ出る。現に、bootstrap-vueとかvuetifyはそれ専用のライブラリが出てい…

Puppeteerで位置情報取得を有効化して現在地を偽造する

環境 Nodejs 12 puppeteer 1.17 概要 puppeteerは本当に便利で、やろうと思えば(大抵のことは)なんでもできる。今回は現在位置をうまく偽装してみる。 コード 今回は東京駅にセットしてみる。ただしデフォルトではブラウザの左上の確認プロンプトが出てし…

Javascriptで2地点間の距離と方角を計算するライブラリ

緯度経度からなる地点Aから地点Bへの距離と方角がほしい人生だった 環境 nodejs 10 求める計算式面倒問題 正直地理の計算詳しくないのでさっぱりだが、地球が楕円であるので、式が面倒らしい 例えば以下はPythonで計算するコードを載せてくれている例 長い […

GCPのCloud FunctionsでPuppeteerキャプチャサーバーを構築

マジで簡単だったのでメモ Functionの作成 GCPの管理画面から「Functions」を開く 名前:任意 割り当てるメモリ量:1GB トリガー:HTTP ランタイム:Nodejs 今回は8にした index.jsの中身を以下 const puppeteer = require('puppeteer'); exports.screensh…

Nuxt.jsでQiita API取得して一覧表示するアプリをFirebaseへデプロイするチュートリアル

他のチュートリアルとか、やってみた!だと早速認証周りだとかElement UIとかに手を出してて難しすぎる。 本質的に、一番シンプルな感じで Qiita API v2 認証不要を叩いて リスト表示するだけのアプリをNuxt.jsで作って firebaseに無料デプロイ! までやる。…

Mac OSにnodenvとyarnをインストールする

さらばnodebrew 今までnodebrew使ってたけど、コマンド体型がrbenvやpyenvと違って独特である。バグとかはなくて安定はしていたが、やはり*bnv系で揃えたほうがいいなあということで、一式をnodenvに合わせた 環境 Mac OS Mojave nodenvのインストール 今ま…

オレオレ .eslintrc.yml 晒す

晒す env: commonjs: true es6: true node: true extends: standard globals: Atomics: readonly SharedArrayBuffer: readonly parserOptions: ecmaVersion: 2018 rules: indent: - error - 2 linebreak-style: - error - unix quotes: - error - single sem…

Puppeteerでリダイレクト元URLとリダイレクト先URLを取得する方法

環境 puppeteer 1.12 nodejs 10 やりたいこと Puppeteerでリダイレクトを記録したい コード すでにいろいろ記事は上がっているが、以下。ポイントはredirectChain()使うところだろうか。 const puppeteer = require('puppeteer'); (async () => { const brow…

DockerでNodejsとyarnをなるべくシンプルにインストール

環境 Docker 18 docker-compose 1.23 debian系 やりたいこと とあるDockerイメージにNodejsをインストールすることにした。普通ならapt-get install nodejsとパッケージ管理システム経由でインストールするのが定石だが、理由があってイメージサイズを小さく…

Nodejsのasyncでリトライを行いたいなら「async-retry」

環境 nodejs v10 やりたいこと 例えばあるURLへHTTPリクエストして、失敗した場合にリトライしたい。けど失敗したときのレスポンスコードが500のときはやり直すけど、404のときは無駄なのでそのままエラーにしたい。 いいライブラリがないか探していたところ…

Puppeteerで一定回数スクロールしまくる

環境 Nodejs 10 Puppeteer v1.12.2 概要 言わずとしれたヘッドレスで動作するChromeこと、Puppeteer で、今回は長いページで下までスクロールしたい。普通に考えてwindow.scrollTo(0,1000);をpage.evaluate()するのが一般的なのだが、訴求面と見ていると、ス…

Nodejsで変数確認したりデバッグする方法

環境 nodejs 10 やりたいこと rubyのbinding.pryみたいにプログラムコードの途中で実行を止めて変数の中身とか参照したい やり方 例えば以下のようなjavascriptを用意する。 const val1 = 1; const val2 = 2; debugger console.log(val1 + val2); 1つ目のポ…

Node.jsでコマンドライン引数処理を行うならcommand-line-argsがよさげ

最近だとコマンドラインツールはGolangで書かれることが多くなっていたが、Nodejsでコマンドラインで処理を受け付けたい、ということも全然あると思う。 そのときに必ず当たる壁がコマンドライン引数の処理である。 引数のパース、必須項目の扱い、ヘルプの…

NodejsでファイルからMD5ハッシュを取得したい

md5はこういうの ~/tmp $md5 tmp.wav MD5 (tmp.wav) = a7b3e6a4865d0b5ae39db05371008c2a をNodejsで求めたい 環境 nodejs 8 けど見てる感じ4以上なら動きそう 10でも動いたし コード const crypto = require("crypto"); const fs = require("fs"); function…

NodejsでGoogle Cloud Storageへファイルをアップロードしてみる

環境 nodejs v8.8.1 ここではAWSでいうS3にあたるGoogle Cloud StorageへNodejsでローカルのファイルをアップロードしたりしてしてみる。 サービスアカウントの作成 まずは権限設定 アクセスに必要なキーを含むJSONファイルをゲットする必要がある。 GCPコン…

ヘッドレスブラウザPuppeteerで指定時間待たせる方法

いわゆるwait()とかsleep()とかdelay()って呼ばれてるやつ。 nightmareなら確かwait()だったかな? Puppeteerくんには残念ながら今のところそういった便利関数の実装はないので自分で作る必要がある。 const puppeteer = require('puppeteer'); async functi…

初心者がNodeJSでBabelとgulpをインストールする

ES2015とかなんぞいって奴がちゃんと1から環境の構築をしてみる 環境 bash-3.2$ node -v v5.12.0 bash-3.2$ npm -v 3.10.6 babelのインストール まずはbabelのインストールから始める。 npm install-D babel-cli 適当にa.jsでもつくって以下 const myfunc =…

Slackのbotを30秒で作成する

環境 mPro:botkit_test thr3a$ sw_vers ProductName: Mac OS X ProductVersion: 10.11.5 BuildVersion: 15F34 mPro:botkit_test thr3a$ npm -v 3.8.3 mPro:botkit_test thr3a$ node -v v5.10.0 APIキーの取得 ココからキーを取得して控えておく インストール…