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

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

ejsでインクルードをするときに、パスをルート相対URLで指定したい

## process.cwd()

Node.jsの`process.cwd()`は、コマンドが実行されたディレクトリを返します。

たとえば、次のようなファイル構成だったとしましょう。

“`plaintext
./project
└ src/
 └ *.ejs
└ package.json
└ gulpfile.js
“`

この場合、`project`ディレクトリで`gulp`コマンドをたたくことになります。その時に`process.cwd()`が返す値は`path/to/project`になるので、次のように1つ変数化しておけばルート相対URLのような感覚でパス名を記述することができます。

“`js
<% const ROOT = `${process.cwd()}/src`; %>
<%- include(`${ROOT}/path/to/_include.ejs`) -%>
<%- include(`${ROOT}/path/to/_include.ejs`) -%>
<%- include(`${ROOT}/path/to/_include.ejs`) -%>
<

元記事を表示

[JavaScript]ESLintの設定をグローバルルールで保存する

# 初めに

学習用でESLintが使いたいけど、プロジェクトごとに設定ファイル(.eslintrc.*)を作成するのは面倒。
そこで、設定ファイルをグローバルルールとして保存してプロジェクトごとに作成しなくていいようにしたので、その時にやった方法を備忘録としてまとめてみました。

# 方法

## 1. ESLintのインストール

まずはESLintをグローバルインストール。

“`terminal
> npm -g i eslint
“`

ここで、-gは–global、iはinstallを省略したもの。

## 2. ESLintの設定ファイルをグローバルとして保存

`.eslintrc.json`を作成し、ユーザーディレクトリ直下に保存する。

– .eslintrc.jsonを保存する場所

“`
MacOS:/ Users / {USERNAME}
Windows:C:\ Users \ {USERNAME}
“`

– .eslintrc.jsonの中身

“`json:.eslint.json
{
“extends”: “eslint:reco

元記事を表示

Node.jsでOSの環境変数を読み込む

“`
yuta:~ $ node
> process.env
{ SHELL: ‘/bin/bash’,
SESSION_MANAGER:
‘local/CARMILLA:@/tmp/.ICE-unix/1792,unix/CARMILLA:/tmp/.ICE-unix/1792’,
QT_ACCESSIBILITY: ‘1’,
“`

## 実行

“`app.js
console.log(process.env.USER)
“`

“`
yuta:~ $ node app.js
yuta
“`

元記事を表示

コロナで危険度の高い人を見つけたらすぐ治療しようとするアプリ作ってみた

# はじめに
この記事は [chillSAP 夏の自由研究2020](https://note.com/chillsap/n/n66e12ef65d11/) の記事として執筆しています。

猛暑が続いておりますが、皆さまいかがお過ごしでしょうか。
今年はコロナの影響で、日々言い知れぬ不安に苛まれることも多いのではないでしょうか。
この状況下で発熱してしまった方のご心境は察するに余りあります。
このような方の症状を一刻でも早く緩和させるため、今回は特に治療の緊急度の高いご高齢&高熱の方を判定してイ〇ジンをかけて治療を行うアプリを開発しました。
(注:本記事はコロナウイルスに対する治療法を提案するものでもなければ、イ〇ジンの効果を証明するものでも無いことをご承知おきください。また、ご気分を害された方がいらっしゃったら誠に申し訳ございません。)

# 概要
![コロナアーキ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531075/499b345c-0aa4-5046-15cb-842a95b2fea2.p

元記事を表示

pkgでインストールしたnode.jsを、Nodebrewのnode.jsに入れ替えたい!

# nodeのバージョン管理を簡単にした〜い
ので、個人的にnodeをインストールするときは最初からNodebrewを使っているのですが、仕事で使っているマシンでは何を思っていたのかpkgでインストールしていたので、入れ替えした手順を備忘として残したいと思います

~~同部署の人がnodeのバージョン変更で手こずってて、Nodebrewで一発やんけと嘲笑していたところ
自分もpkg版だったのでしれっと入れ替えた~~

とりあえず最初に、そもそもnode.jsが入っているかを確認しておきましょう

“`
$ node -v
“`
そしてNodebrewとは、?



hokaccha / nodebrew

Node.js version manager. Contribute to hok

node.jsでnpm run devがエラーになった場合の対処法

nuxt.jsの開発環境でで以下を実行したらエラーが出ました。

“`
$ npm run dev
:
This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
:
“`

##結論
以下のコマンドを実行したら解決しました。一度消去後に再インストールしてます。

“`
$ rm -rf node_modules
$ rm package-lock.json yarn.lock
$ npm cache clear –force
$ npm install
“`

コマンド実行前もインストールされているはずでしたが、バージョンの違いでエラーが出る場合があるので一度消去して、再インストールしたらいけました!バージョンは変化していませんが、node?のバージョンが変化してのでしょうか。
詳しい

生のNode.jsでプロジェクト作成時にやること

当然ではありますが、生のNode.js(特にWebアプリ)でプロジェクト作成時にやることが多く、HTTP通信に関する勉強にもなったのでメモを残しておきます。
Node.jsに関してはほぼ初心者なので、不足や誤りがあるかもしれません。発見した場合はコメントなどでご報告いただけますと幸いです。
## プロジェクトの初期化
とりあえず初期化。
いろいろ聞かれるので、それぞれのプロジェクトに合った選択をしていきます。

“`zsh
$ npm init
“`
– __package name: (フォルダ名)__ プロジェクトの名前を定義します。特に変更がなければそのままReturnまたはEnterでOK。
– __version: (1.0.0)__ バージョンを定義します。これも1.0.0のままでよければそのままReturnまたはEnterでOK。
– __description:__ プロジェクトの概要を定義します。これも空白のままでよければそのままReturnまたはEnterでOK。
– __entry point: (index.js)__ アプリケーションを起動するためのファイ

OBS をスマホや M5GO(M5Stack)から遠隔制御 〜 MQTT や obs-websocket を利用 〜

## はじめに
この記事は、ライブ配信などで使われる **[OBS Studio(以下、OBS と記載)](https://obsproject.com/ja) を遠隔制御してみた**という内容です。

まずは、その仕組みを実際に動作させている様子をご覧ください。

Angular開発環境をDockerコンテナで立てる

# Angular開発環境をDockerコンテナで立てる

Angular 開発環境を Docker コンテナで立てる際に、コンテナ内の localhost:4200 にホストマシンからアクセスできないなど手こずったので、環境構築手順を記載したい。

## 目次

* [導入](https://qiita.com/freope/items/94b639a4750d06dbc86e#%E5%B0%8E%E5%85%A5)
* [作業フロー](https://qiita.com/freope/items/94b639a4750d06dbc86e#%E4%BD%9C%E6%A5%AD%E3%83%95%E3%83%AD%E3%83%BC)
* [各構成ファイルの役割](https://qiita.com/freope/items/94b639a4750d06dbc86e#%E5%90%84%E6%A7%8B%E6%88%90%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%BD%B9%E5%89%B2)
* [参考資料](https://qii

nowコマンドが使えなくなっていたのでnodeをアップデートした

ある日、Zeit Nowのnowコマンドを使おうとしたところ、実行できなくなっていました。
1ヶ月前くらいまでは使えていたのに…
解決方法をチップスとして残します。

# Nowとは
nowと打つだけでデプロイできてしまうシンプルで簡単に使えるPaaSです。
https://vercel.com/home
私はNext.jsで利用していますが、他のNode.jsのフロントエンドFWやPythonやGoなどでも使えるようです。

Next.js + nowの使い方はこちらが参考になります。
https://qiita.com/shioiyan/items/540a0d68118c0384f4e4

# nowコマンドが実行できなくなった
“`
now
> UPDATE AVAILABLE Run `npm i -g now@latest` to install Now CLI 19.2.0
> Changelog: https://github.com/zeit/now/releases/tag/now@19.2.0
> Error! The specified token is

Node.jsでディレクトリ配下にあるファイルを再帰的に探索する

下記のディレクトリ構造から、txtファイルのpathとfile名を一覧で取得する方法(Node.js)です。

“`
./dir
├── dir2
│ ├── dir3
│ │ ├── file2.txt
│ │ └── file3.md
│ ├── file2.txt
│ └── file3.md
├── file1.md
└── file1.txt
“`

## 実装コード

“`javascript
const fs = require(‘fs’);
const path = require(‘path’);

const searchFiles = (dirPath) => {
const allDirents = fs.readdirSync(dirPath, { withFileTypes: true });

const files = [];
for (const dirent of allDirents) {
if (dirent.isDirectory()) {
const fp = path.joi

EC2でReactをhttpsでnpm startして外部からアクセスする

EC2上でReactアプリをhttpsでホストすることがあったので備忘録です。

AWSならACMとかELBとかRoute53とか使えるわけですが、
ちょこっとテスト的に動かしてみたいだけなのでできるだけ簡単にSSL化したいと思います。

結論から言うと
HTTPS=trueにしたnpm startでlocalhostでhttpsサーバーを立てて、
EC2外部からのアクセスはnginxでlocalhostにリダイレクトします。

# 環境
* EC2 (Amazon Linux 2)
* React
* nginx
* Node.js

# 1. EC2を立てる
EC2立てます。
http, httpsのポートをあけておきます。

# 2. nginxインストール・設定
## インストール
nginxインストールしますが、Amazon Linux 2ではnginxがyumでサポートされていないらしいので
以下のコマンドでインストールします。

“`
$ sudo amazon-linux-extras install nginx1.12
“`

## SSL化設定
SSL化するにあ

【niv】package.jsonのscripts一覧をターミナルから確認できるCLIを作ってみた

# 作ったもの

`package.json` に登録されている `npm-scripts` をターミナルから確認、実行できるCLIを作ってみました。

![](https://user-images.githubusercontent.com/24543982/89758815-a95cf000-db23-11ea-99d3-2317c54b93b0.gif)

# 説明

`package.json` があるフォルダで

“`
$ niv
“`

と実行すると
![スクリーンショット 2020-08-21 18.03.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154299/a60b9143-12

GAEでNode.jsを使ってHello Worldをするまで

GAEを使って、Node.jsのHello Worldを行った際の備忘録。

と言っても、Googleの公式ドキュメント通りに行えば大体大丈夫でした。
たまに詰まっても、ググれば出てきたって感じでした。

ではさっそく。

#GAEとは
Google App Engine の略。
Google Cloud Platform の一部。
Google のサーバーを借りてwebアプリ等を公開できる。

#公式ドキュメントを参考にやってみる
まずは、こちらの手順に従う。
スタンダード環境で Node.js を使用するためのクイックスタート
https://cloud.google.com/appengine/docs/standard/nodejs/quickstart#local-machine_1

以下、躓いたところの対処法を残しておく。

“3.リージョンを選択“
東京なら asia-northeast1 だ。
https://cloud.google.com/about/locations?hl=ja#locations

![スクリーンショット_081920_084150_P

Firebase Authentication 匿名ログイン 成果物URL:https://tokumei.netlify.app

## 成果物
https://tokumei.netlify.app

ワイ 「ログイン後Firebaseから**寿命が1時間のJWTトークン**が取得できる」
ワイ 「現実的な使い方をするなら」
ワイ 「**JWTトークン**を自分が使ってるオリジンサーバに送って改ざんされていないかチェックする」
ワイ 「ライブラリは**firebase-admin**を使う」

## トークンが改ざんされていないかチェックするソース
“`package.json
{
“dependencies”: {
“firebase-admin”: “^9.1.0″
}
}
“`

“`index.js
const admin = require(‘firebase-admin’);

// 各自用意
const firebaseConfig = {
type: ”,
project_id: ”,
private_key_id: ”,
private_key: ”,
client_email: ”,
client_id: ”,
auth_uri:

API Endpointのエントリポイント・コードの書き方

API Gatewayとかから飛んできたリクエストをLambdaでいい感じに処理する、よくあるバックエンドコード
この辺のいい感じの記述を模索してて最近こんな感じになっています。

## 最近の自分の書き方

“`js
/**
* フォーマットに関してはこいつに任せる。
*/
const run = async(event, hoehoe) => {
// どでかいtry-catchで例外をアプリ内に封じ込める
try {
// 悩むけどこの辺の情報はこっちでいいかな
const name = event.pathParameters.name;

// 処理は極力別クラスに任せる
const service = new Service(hoehoe);
const pet =service.getPet(name);

// 仕様と対応するので正常系の出口は一箇所
return getSuccessResponse({
color: pet.color.value,
size: pet.si

ちょっと古いBraviaもHey! Siriで操作できるようにする。

##はじめに
ほんの少し前のことなんですが。
長年使ってたテレビが遂に壊れてしまったんですよ。地デジが始まる頃に買った『KDL-40X5000』って言うソニーのテレビ。
テレビが映らないのは困るなあってんで、すぐに買いに行ったんです。そしたらこの10年ちょっとで、テレビってえらい進化しているんですね。薄く軽くなったのはもちろん、ベゼルが小さくなったんですよ。なので、設置面積はほとんど変わらずだいぶ大きなテレビを置けました。
今回買ったのは**『KJ-49X8500F』**です。
Android TVなんですねー。
YouTubeとか見られるんですねー。
あこがれの4Kですよー。
画が綺麗になりましたねー。
画面も大きくなりましたよー。
と大満足。

そこにニュースが。
「[ソニーのAndroid TVがAirPlay 2とHomeKitをサポート](https://japanese.engadget.com/jp-2019-12-04-android-tv-airplay-2-homekit.html?guccounter=1&guce_referrer=aHR0cHM6Ly93d3c

Express 入門

公式ドキュメントもかなりシンプルでわかりやすいですが、自分用メモとして。
[Express(日本語ドキュメント)](https://expressjs.com/ja/)

## 最小構成

最低限、これで動かせるよ!というコードです
さくっとWebサーバ立ててなにか試したい時に

### インストール

“`bash
$ mkdir myapp
$ cd myapp
$ npm init # entry point: app.js => 任意のファイル名
$ npm install express
“`

### ディレクトリ構成

“`
(root)
├ package.json
├ package-lock.json
├ app.js
└ node_modules
“`

### コード

“`js:app.js
const express = require(‘express’)
const app = express()

app.get(‘/’, (req, res) => res.send(‘Hello World!’))

app

nvmをインストールしたのに、-bash: nvm: command not foundになる。

https://github.com/nvm-sh/nvm#install–update-script
こちらの

“`
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
“`

を使ってnvmをインストールし、特にエラーもなく完了したはずなのに

“`
$ nvm –version
“`

-bash: nvm: command not found
と言われた。

色々試した結果、

“`
$ source ~/.nvm/nvm.sh
“`
を実行することで解決。

頑張った末に、手順の下の方に”Troubleshooting on macOS”を見つけたので、ドキュメントを読むのが大事だと思いました。

追記(2020年8月21日)

このままだと、起動のたびに同じコマンドを叩かないといけなかったので、起動のたびに有効化してくれるように、/etc/profile.d/以下にシェルを置いておきます。
>/etc/profile.d/nvm.sh

“`