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

Node.js関連のことを調べてみた2020年03月28日
目次

Mac Node.jsのバージョン有効化する手順でvX.X.X is not installedと出力された話

# 目的

– Node.jsをHomebrewを使用してインストール後にバージョンを有効化する際に「vX.X.X is not installed」と出力され、それを解決した話をまとめる。

# 実施環境

– ハードウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| OS | macOS Catalina(10.15.3) ||
| ハードウェア | MacBook Air (11-inch ,2012) ||
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 ||
| メモリ | 8 GB 1600 MHz DDR3 ||
| グラフィックス | Intel HD Graphics 4000 1536 MB ||

# エラー内容

– インストール後に下記コマンドを実行してバージョンの有効化を行った。(インストールは正常に完了、X.X.Xはバージョン名)

“`terminal
$ nodebrew install-binary stable
$ nodebrew use vX.X.

元記事を表示

Webサイトを運営しているミニマリストがインストールしている最低限必要なアプリ達

#Overview

シンプルであることに越したことはない。
シンプルなら環境の移行や再構築も苦にならない。
シンプルなら必然的にミスする確率も低減する。
今回は環境構築メモの役割も含めて、Webサイト運営に使用しているアプリを公開しておきます。

#Target reader

– シンプルかつ低コスト&高い可用性を持つWebアプリを運用したい方。
– Webサイトを作る上で最低限何を勉強しないといけないか知りたい方。

#Prerequisite

– OSはWindows
– Macは1社に依存することからリスクヘッジのためWindows
– ただし、LinuxコマンドがメジャーなのでWindowsで実行する場合にググらないといけないことがある。
(WindowsのLinux環境であるWSL2が一般的になれば格差は是正されるかもしれない)
– 言語はNode.js
– フロントエンドがJavaScript一択なので、バックエンドも同一言語ならパッケージも共有でき効率的。
– クラウドベンダーのFaaS(Functions)をみた場合、N

元記事を表示

Qiitaに投稿した記事をいい感じにExportする君を作った

## 結論ファースト
– Qiitaに投稿した記事をいい感じにExportする君を作った
– マークダウンと画像をいい感じにダウンロードできる
– GitHub: https://github.com/yu-suke-dev/export-qiita
スクリーンショット 2020-03-27 11.42.17.png

## 作ろうと思ったきっかけ
– 最近Qiitaがいろいろと話題なので、自分の記事をExportしたいなと思った
– 朝起きて、突如やろう!となった(出勤前までに)

## 実現したかった”いい感じ”とは
– 記事はマークダウンを取得すること
– 記事内に、Qiitaにアップロードした画像もダウンロードしてくること
– 記事ごとにディレクトリを分けて写真と記事のセットをわかりやすくすること

元記事を表示

chromeで401レスポンスが返ってきたときの不具合

# 背景

https://www.nnn.ed.nico/questions/14833
n予備校の教材の通りに実装を進めていたところ、このリンクと同じ状況に遭遇

# 問題

chromeに限り、以下のコードで表示されるはずのログアウトしましたという文とリンクが表示されない。

“`javascript
function handleLogout(req, res) {
res.writeHead(401, {
‘Content-Type’: ‘text/html; charset=utf-8’
});

res.end(‘‘ +

ログアウトしました

‘ +
ログイン‘ +
‘‘
);
}
“`

# 原因
chromeのバグ
https://bugs.chromium.org/p/chromium/issues/detail?id=992639

元記事を表示

npm upTypeError [ERR_INVALID_ARG_TYPE]

# 状況
以下のようなメッセージが出たので実行してみました。

“`information.sh

│ New patch version of npm available! 6.14.1 → 6.14.4 │
│ Changelog: https://github.com/npm/cli/releases/tag/v6.14.4 │
│ Run npm install -g npm to update! |

“`

“`update.sh

$ Run npm install -g npm

“`

updateが完了してgulpを実行しようとしたところ
変更していないタスクにて以下のエラーが発生。

“`error.sh

TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-li

元記事を表示

jestでモックしてみたメモ

レガシーコードのテストをjestに移行していた時に、
jestだとどうやってモックしたり、追跡したりするんだ?となったのでその時のメモ

# 最初に
相当アホなところでハマったのだが、jest はnamespaceをそのまま読み込むため以下のようの読み込まないといけない。

“`typescript
import ‘jest’ // OK

import jest from “jest” // NG

jest.xxxx()
“`

# 特定の関数をモックする
関数にもろもろについてモックの仕方です。

## テスト用のモック関数の作成

“`typescript

const mockFunc = jest.fn().mockImplementation(() => return “mock func”);
console.log(mockFunc()); // mock func
“`
関数自体のモックは jest.fn()に集約されており、単純に何か値を返すのみの関数は mockImplemantionの引数で定義します。
また、mock関数の引数や、どういった値を返した

元記事を表示

Node.jsをインストール(nodebrewでバージョン管理)

**本来の目的:ローカル環境でES6を使用**

node.jsのバージョン管理ツールnodebrewをインストール

※メリット:複数のnode.jsのバージョンを簡単に切り替えられる。

#brewがインストールされているか確認

“`ruby

$ brew -v
“`

“`ruby:【実行結果】インストールされている

Homebrew 2.2.6
Homebrew/homebrew-core (git revision ba38; last commit 2020-02-28)
“`

#nodebrewのインストール

“`ruby

$ brew install nodebrew
“`

“`ruby:【実行結果】
Updating Homebrew…
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
abseil hdf5@1.10 publish
archi

元記事を表示

LINE botを勉強会の受付に導入してみたい! ~connpass APIの紹介~

#導入

 仕事は別に勉強会を開いているのですが、有志による運営のため手が回らないこところが多いです。その中でも受付業務にフォーカスして手助けになるシステムのプロトタイピングを行っています。

[Noodlで受付嬢を創った](https://speakerdeck.com/maepu/noodldeshou-fu-niang-wochuang-tuta)

 私と同じくユーザコミュニティの運営やイベントの開催をされている方に読んでいただいて、少しでも負担が軽くなるシステム例としていただけたら嬉しいです。

 勉強会といえば、IT関連の勉強会支援サービス**connpass**ですね。
と、いうことでconnpassのAPIを利用してLINE botと連携してみようと思いました。
この記事ではconnpass APIの紹介と簡単な使い方を書いています。

#connpass APIについて
 こちらの[connpass API](https://connpass.com/about/api/)からURLと検索クエリ、レスポンスについて解説されています。開催日時や場所だけでなく、サイトのH

元記事を表示

[Node.js] express + nodemon + BrowserSync でゲボ楽コーディング

# はじめに
expressを使ってBrowserSyncを使う記事が少なかったので書きます。
nodemon + BrowserSyncでブラウザノータッチの楽々コーディングを目指そう。
# 方法
1. expres側ファイルをnodemonで監視(3000portで起動)
2. BrowserSync を 4000 番ポートで起動、nodemonに接続

これによりクライアント側のファイルはBrowserSyncでブラウザをリロード
nodemonによるサーバ再起動は、再起動後にBrowserSync に通知してもらえるようにする。
#前提
– node + expressは導入済み
– Nodeの側のポートは3000に指定

# 導入
`browser-sync` のインストール

“`
$ npm install –save-dev browser-sync
“`

インストールが終わってからbrowser-syncのコンフィグファイルを生成

“`
$ npx browser-sync init
“`

`bs-config.js`が作られるので、以下のように一部

元記事を表示

話題のanalyzeコマンドを実装してみた

今、イケてるエンジニア界隈で話題沸騰中の`analyze`コマンドをご存知でしょうか。

こういうやつですね。

スクリーンショット 2020-03-26 9.41.49.png

# Yet another `analyze` command

コレCLIっぽい見た目をしていますが、実はWebブラウザ上[^sobaya007]でしか動作しません。不便ですね。
[^sobaya007]: https://qiita.com/sobaya007

Shellでも使いたい!という声にお答えして、実装してみました!!

コチラです。
[![NPM](https://nodei.co/npm/qiita-analyze.png)](https://nodei.co/npm/qiita-analyze/)

Source

元記事を表示

JavaScriptでちょっと複雑なcliを作るのに便利なEnquirer

# この記事は

[LAPRAS アウトプットリレー](https://daily.lapras.blog/) の…何日目だっけ?3/25の記事です!
こんにちは!LAPRAS エンジニアの @rockymanobi です!

最近Node.jsでCLIを作る機会があり、その時に触ったEnquirerというライブラリが便利だったので、軽く紹介してみようというものです。ツールそのものについて軽くふれつつ、制作過程で出てきた「こんなことしたいけど、どう実現すれば良いんだろう」と試行錯誤して分かった使い方などを共有できればなと思います。

# Enquirerとは

Enquirerは CLIアプリケーションにおける対話的インターフェイスの実装を楽にしてくれるライブラリです。単純なテキスト入力の受付はもちろん、リストからの選択、チェックボックス、パスワード、入力補完、など、様々な入力方式を手軽に組み込むことができます。Node.js製です。JavaScript(TypeScript)万歳!

[公式サイト](https://github.com/enquirer/enquirer)による

元記事を表示

【あと少し】楽天市場のAPIを使って買えるマスクを提案してくれるLINEBotを作ってみた

### はじめに
ProtoOutStudioというイケイケなスクールの「LINE Bot+APIで表現してアウトプット」という課題で製作したものです。

こちらの[1時間でLINE BOTを作るハンズオン](https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d)の記事をベースにLINEBotを作成しました。
最近の新型ウィルスの影響で、ネットショッピングばかりしているのですが、ちょっと楽天市場のトップ画面を見るのに飽きてきたので、(マスクなどの)必要なものを、(売り切ればかりなので)在庫のある商品で、高額になりすぎて買う気がなくなってしまわない(金額の)範囲で、提案してもらえるLINEBotを考えました。
(Amazonは申請が大変そうに見えたのでお見送りしました)

### 概要と作れなかったところ
#### 概要
+ LINEBotにほしいもの、「マスク」と入力したら
1. 楽天市場のキーワード検索から「マスク」を検索
2. 絞り込み検索で「購入可能」
3. 「最安価でソート」
4. 「最低金額

元記事を表示

[備忘録]Macの開発環境構築(anyenv + nodenv + Node.js)

# 構築の流れ
1. Homebrewのインストール
2. Gitのインストール
3. anyenvのインストール
4. nodenvのインストール
5. Node.jsのインストール

# 環境
– macOS Catalina
– シェルは zsh

# Homebrewのインストール

[本家](http://brew.sh/index_ja.html) のスクリプトを実行。

“`
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`

Homebrewのバージョン確認。

“`
% brew -v
“`

# Gitのインストール

Gitがインストールされているか確認する。
使い方が表示されればOK。

“`
% git
“`
### HomebrewでGitをインストール

“`
% brew install git
“`

# anyenvのインストール

HomebrewかGitでanyenvをイン

元記事を表示

VSCode1.43.0では即時関数内でtry-catchを使うとreturnが正しく解釈されない

VSCode(1.43.0と1.43.1で確認)では、以下のコードでconsole.logの部分が「到達できないコード」として判定されてしまいます。

“`JavaScript
const message = (() => {
try {
/* エラーが発生しそうな処理 */
return “success”;
} catch (e) {
return “error:” + e;
}
})();

console.log(“message = ” + message);
“`

しかし、Node.js(12.16.1)で上記のコードを実行すると、console.logはちゃんと実行されます。

“`
message = success
“`

即時関数の中でtry-catchは使うべきではないのでしょうか。
そもそもこういった処理を即時関数化すべきではないのかも知れません。
ただ、VSCode 1.42.1 以前はちゃんとconsole.logが到達可能と判定されていましたし、よく分かり

元記事を表示

create-react-appを卒業して自分でReact + TypeScriptの開発環境を作れるようになるということ

これまでReactの環境構築をする時は[create-react-app](https://github.com/facebook/create-react-app)に頼りっきりでしたが、いい加減自分で作れないとまずいなと思い忘備録も兼ねて残しておきます。
また、せっかくTypeScriptも使うので `webpack.config.js` もTypeScriptで書けるようにしたいと思います。

***

最終的なディレクトリ構成は次のようになります。

“`
.
┃━━ public
┃ ┗━ index.html
┃━━ src
┃ ┃━ index.tsx
┃ ┗━ App.tsx
┃━━ package.json
┃━━ package-lock.json
┃━━ tsconfig.json
┗━━ webpack.config.ts
“`

それではやっていきましょう。

## 1. ディレクトリの初期化

適当なディレクトリを作って `npm init` するだけです。

“`
mkdir hogehoge
cd hogehoge
npm init -y

元記事を表示

Node.js を持ち歩けるようにして、どこでも簡易WEBサーバを起動出来るようにする

Node.jsで便利なライブラリをつくったとしても、お客さまのPCやサーバの本番環境に **Node.jsの実行環境がないケース** もあります。**「Node.jsの実行環境を持ち歩けたらなぁ、、」**ということでググってみたらこの記事が。。

– [Node.js & npm をインストーラー無しで 手軽にはじめる](https://www.cottpic.com/2019/04/use-NodeJS-without-installer.html)

インストーラなどの実行が不要な **解凍すればすぐに使えるNode.js実行環境**の構築手順です。コレを使えば、実行環境ごとZipでアーカイブしたファイルを作成し**作業環境でそれを解凍すればNode.js環境の構築完了**、なんて事ができそうです。

ついでに、そのNode.js上でWebサーバを立ち上げることで、どこでも簡易WEBサーバが起動出来るようにしてみます。

## Node.js実行環境の構築

[公式](https://nodejs.org/ja/download/)からバイナリをダウンロード。Windows Bi

元記事を表示

obniz+赤外線LED+TypeScriptでリモコンコンセント(OCR-05W)を動かす

## はじめに

こんにちは。電気毛布エンジニアの[@tmitsuoka0423](https://twitter.com/tmitsuoka0423)です。

昨日書いた「[obniz+赤外線LEDでリモコンコンセント(OCR-05W)を動かす](https://qiita.com/tmisuoka0423/items/ac84514454857d157c60)」では、obnizのパーツライブラリページ上で動作確認しましたが、今回はTypeScriptで実装していきます。
ソースコードは[https://github.com/tmitsuoka0423/obniz-ocr-05w](https://github.com/tmitsuoka0423/obniz-ocr-05w)で公開しています。

## 【クラウドファンディング実施中!】mouful(モウフル)

「[**電気毛布につけるだけ!スマホで布団の温度調節できるmouful(モウフル)**](https://camp-fire.jp/projects/view/220261)」
というクラウドファンディングを実施しています。

元記事を表示

node.jsのテンプレートリテラルと+による文字列結合の速度差

# はじめに
文字列を取り扱う際、毎回テンプレートリテラルと文字列連結だとどちらの方が早いのだろう。という疑問が毎回頭を過ぎってました。
ということで軽くですがテストしました。

# 環境
– Windows 10 pro
– node.js v13.0.1

# 試す

計測には`performance`を使用しました。
10^7回文字列連結する処理を10回繰り返し、平均実行時間を出しました。
なお実行時間の単位は`ms`です。

まずは単純な文字列同士の結合です。

“`javascript
const { performance } = require(“perf_hooks”);
const a = “hogehoge”;
const b = “fugafuga”;

/** concat_text */
let concat_sum = 0;
for (let i = 0; i < 10; i++) { const start = performance.now(); for (let j = 0; j < 10 ** 7; j++) { const hog

元記事を表示

Windows10にてReact公式チュートリアル用のローカル開発環境構築時、node最新化、npx実行で突っかかった備忘録

# はじめに
React公式チュートリアルをやってみたところ
ローカル開発環境構築中にnode最新化、npx実行で突っかかったので、備忘録。

実施したチュートリアル
[Reactチュートリアル(日本語)](https://ja.reactjs.org/tutorial/tutorial.html)

なお、自分はReactは触ったことが無い。

# 環境
– windows10 64bit
– node 6.9.4 -> 13.11.0
– npm 6.13.7

# ローカル開発環境の構築
チュートリアルを進める方法には、2つのオプションがある。

> オプション 1: ブラウザでコードを書く
> 始めるのに一番手っ取り早い方法です!
> …
> オプション 2: ローカル開発環境
> これは完全にオプションであり、このチュートリアルを進めるのに必須ではありません!

今回はオプション2を実施した。

## node最新化
### 既存nodeバージョン確認
> 1. 最新の Node.js がインストールされていることを確かめる。

とあるので、nodeを最新化する。
現行入

元記事を表示

Node.jsでファイル出力

下記の『同期処理メソッド「writeFileSync」』を参考に実施
[node.jsでファイルの入出力操作](https://qiita.com/shirokuman/items/509b159bf4b8dd1c41ef)

元記事を表示

OTHERカテゴリの最新記事