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

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

Cloud Firestore でサーバーの現在時刻を保存する

# 概要

Firebase の Cloud Firestore でサーバーの現在時刻を保存する方法を調べたので、ご紹介します。

# Firestore でサーバーの現在時刻を保存するサンプルコード

結論としては、 `require(“firebase-admin”).firestore.FieldValue.serverTimestamp()` を利用すれば良いです。

以下、Node.js のサンプルコードです。

“`js
const admin = require(“firebase-admin”);
const db = admin.firestore();
const FieldValue = admin.firestore.FieldValue;

let docRef = db.collection(‘objects’).doc(‘some-id’);

let updateTimestamp = docRef.update({
timestamp: FieldValue.serverTimestamp()
});
“`

以上、Cloud Firestor

元記事を表示

Error ExecJS::RuntimeUnavailable: 発生時の対処法

#発生現象
AWSのEC2でWebサーバ、アプリケーションサーバの設定時に、環境変数の設定をする際の`$ rake secret`を実行した際に下記Errorが発生。

“`terminal:terminal
ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
/var/www/chat-space/config/application.rb:7:in `
/var/www/chat-space/Rakefile:4:in `require_relative’
/var/www/chat-space/Rakefile:4:in `
(See full trace by running task with –trace)
“`
→Javascriptがうまく走っていないので、[Node.js](htt

元記事を表示

Node.jsを使用してWebアプリケーションからAlibaba Cloud Object Storage Serviceにコンテンツをアップロード

このチュートリアルでは、**Node.js**を使って**Webアプリケーション**から**Alibaba Cloud** Object **Storage** Serviceにコンテンツをアップロードする方法を検討します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-use-node-js-to-upload-files-to-alibaba-cloud-object-storage_594077)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#必要条件
このチュートリアルを実行するには、以下のものが必要です。

1、Alibaba Cloud [Object Storage Service](https://www.alibabacloud.com/ja/product/oss)に登録し、秘密のアクセスキーを取得します。
2、マシン上でNode.jsとnpmを実行します。[Node.js Downloads](ht

元記事を表示

AltJS製のNodeモジュールをGitHubから直接インストールすると同時に、そのライブラリのビルドを自動化するpackage.jsonの設定

この投稿では、NodeモジュールをGitHubから直接インストールする際、そのライブラリをインストールのタイミングでビルドする方法を紹介します。

## この手法はどういうときに使うか?

普段、`yarn add ライブラリ名`をすると、npmjs.orgのレジストリにアップロードされたモジュールが、手元のnode_modulesに入ってきます。仮に、ライブラリのソースコードがTypeScriptやBebelなどのAltJSであったとしても、node_modulesにインストールされるのは普通ビルド後のJavaScriptです。これはライブラリ開発者がnpmjs.orgに公開するとき、AltJSからJavaScriptにビルドしたものをアップロードしてくれているからです。

なので、モジュール利用者は、ライブラリのソースコードがもともとどんな言語で書かれているかを気にする必要がありませんし、ましてや、モジュール利用者が`npm install`しするたびに、わざわざライブラリのソースコードからビルドする必要は普通ありません。

### どうしてもソースコードからインストール&ビルド

元記事を表示

Node.js をインストールする(Windows)

# 環境
– Windows 10 Pro
– 64ビット

# ダウンロード
node.js のサイトから使用環境に該当するインストーラーをダウンロードする。
https://nodejs.org/ja/download/

– ここでは LTS(Long Term Support)推奨版の Windows Installer を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212722/b7c522ec-afd5-3a43-0457-9d96e275bb23.png)

# インストール
– ダウンロードした「node-v12.18.2-x64.msi」を実行。セットアップウィザードが表示されるので次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212722/24dd29de-c25a-c42f-1844-2936a60eeb94.png)

– ライセンスの同意にチェックを

元記事を表示

React.jsをDockerで動かした時のメモ

## 環境

“`
$ cat /etc/linuxmint/info
RELEASE=19.3
CODENAME=tricia
EDITION=”Cinnamon”
DESCRIPTION=”Linux Mint 19.3 Tricia”
DESKTOP=Gnome
TOOLKIT=GTK
NEW_FEATURES_URL=https://www.linuxmint.com/rel_tricia_cinnamon_whatsnew.php
RELEASE_NOTES_URL=https://www.linuxmint.com/rel_tricia_cinnamon.php
USER_GUIDE_URL=https://www.linuxmint.com/documentation.php
GRUB_TITLE=Linux Mint 19.3 Cinnamon
“`

## Dockerのインストール

“`
$ apt update
$ apt install docker-ce docker-ce-cli docker-compose
“`

## node.jsとcre

元記事を表示

Node.jsのExpressでbody-parserを使いたくないけど特定のハンドラーでだけボディのパースをしたい

特定のURL以下だけパースしたいが、その他の広いパスではパースしたくないみたいなことが5年に1度ぐらい発生するかもしれないので、そのやり方のメモ。例えば99%のリクエストはプロキシーとしてそのまま他のプロセスに流す場合、パース作業はほぼ無駄になってしまうので必要なところでだけやりたいですよね?routerを作ってその下だけbody-parserを適用とかできるならそれでもいいかもしれませんが、微妙にそれもしにくい・・・みたいな場合に。

“`ts:app.ts
import express, { Request, Response } from ‘express’;
// 本当はimportしなくてもいいはずだけどTypeScriptはimportしないとエラーになるっぽい
import { URLSearchParams } from ‘url’;

app.post(‘/form/receive’, (req: Request, res: Response) => {
let body = ”;
// streamのAPIを直接扱ってdata/endで情報を読み

元記事を表示

[Alexa]stylesを使って押したら色が変わるボタンを作成する

# stylesを使うとうれしいこと
APLのドキュメント部では、layoutsやcommandsのように共通要素を外だしすることができます。
これと同様に、stylesを使用すると、コンポーンントの特定プロパティの値だけを取り出して定義・共通化することができます。
さらに、stylesでは「対象のコンポーネントが押下されたときだけ色を変える」といったことも可能です。
本記事では、APLでstylesを利用した例を挙げてみようと思います。

# APLドキュメントファイルの作成
以下は、stylesを利用したAPLドキュメントファイルの例です。
“styles”にてスタイル”pushButtonStyle”を定義し、Frame要素にて”pushButtonStyle”を適用しています。

“` StyleTestTemplate.json
{
“type”: “APL”,
“version”: “1.3”,
“settings”: {},
“theme”: “dark”,
“import”: [],
“resources”: [],

元記事を表示

express+postgreSQL+HerokuでWebアプリを公開した手順

使用するパッケージがexpress,pg(とejs)のみで作成したWebアプリを、Herokuにて公開するまでをまとめました。git自体の説明は省いたりしていますが、基本この通りやっていけば公開まではいけると思います。
全体的に情報が古めだったけど、良いサイトないかな。

OS:Windows10
terminal:powershell
テキストエディタ:VScode

#1.準備

#####1-1.ローカル環境でexpress+postgreSQLのアプリ作成

この記事は主にローカル環境で出来上がっているけど公開の手順が分からない人向けなので、ここは省略します。

#####1-2.Herokuアカウント作成
https://www.heroku.com/

#####1-3.HerokuのCLIを使えるようにする
https://devcenter.heroku.com/articles/heroku-cli
でDLしたあとpathを通す。

“`console:terminal
> heroku -v
heroku/7.42.1 win32-x64 node-v1

元記事を表示

Angular ‘Tour of Heroes’ でMEANスタック

# 始めに
前回の記事[MEANスタックの一歩前。Angular と Express の連携](https://qiita.com/twinoze/items/e643a49f5f11b924b948)の続きです。
Angular の公式チュートリアル、’Tour of Heroes’をMEANスタック化します。

前回はAngular の公式からダウンロードした’Tour of Heroes’を若干修正して実際のサーバにアクセスするようにしました。
その後Expressサーバーを構築しました。
ですがデータベースは使用しておらず、サーバー内に配列としてヒーローのリストを持つのみとしていました。

今回はWindows環境ですが、MongoDBをセットアップしてMEANの「M」の部分を完成させたいと思います。

# MongoDB のインストール
まずはMongoDBのダウンロードを行います。[MongoDB公式](https://www.mongodb.com/try/download/community)で、「Available Downloads」に必要な環境情報を登録して「Do

元記事を表示

どうしてもKubernetesを使う気になれず、ECSを使ってみる

#ECSが好き
単純にdocker-composeの延長で使えてfargateにしておけばだいたい安定しているイメージ
運用に必要な知識が少ないし、簡単に作れるしというところでいつもECSを使うことが多いです。

###準備
今回はECS上にnginxとnode.jsのコンテナを作って、EFSをマウントするところまでを実施します。
載せるのは簡単なVueプロジェクト+APIなので基本の基本としてメモしておきます。

###クラスターの作成

まずはECSクラスタを作成します。
一瞬でできあがるのが素晴らしいですね。
クラスター名などは適当に変えてください。

![クラスタの作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273058/7d07d79b-a4b1-45dd-3af0-8fb2eabf1c38.png)

![2クラスタの作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273058/4d9544d3-

元記事を表示

docker-composeでNode.js(Express)とPostgresSQLを連携したサービスを作る勉強会

# 概要

先日行われた勉強会にて簡易ではありますが表題のサービスを作りました。Dockerの勉強の延長で取り組みました。この記事ではそのときの勉強会の内容を記載します。

# どんなモノをつくるのか?

– チャットのようなアプリケーション
– docker-composeによるデータベースとの連携
– Node.js(Express)でフロントエンド&バックエンド
– データベースはPostgresSQL

# 完成したソースコード

https://gitlab.com/tamoco-mocomoco/study-docker-compose

# 参考にさせていただいた記事

https://qiita.com/ryo-ohnishi/items/b54e649b14b51694ef77

# 作ったモノの説明

## docker-compose

### サービス:app

“`
app:
build:
context: ./ # Dockerfile保存場所
depends_on:
– datab

元記事を表示

秋月電子で買ったLEDクラスターランプをobnizで試したメモ #obniz

少し前に秋月電子の店先で見つけて **30円**という安さもあり試しに買ったLEDクラスターランプを触ってみました。

## LEDクラスターランプ

> http://akizukidenshi.com/catalog/g/gM-06699/

店先に置いてあって面白そうだったので購入してみました。

緑と赤のランプです。

## データシートを読んでみた

データシート読んだ仕様などは[こちら](https://protoout.studio/posts/led-cluster-obniz)にメモしてます。

## obnizから利用してみた

電気を流すかGNDにするかの指定だけみたいだったので一旦これで試してみました。

“`js
‘use strict’

const Obniz = require(‘obniz’);
const obniz = new Obniz(process.env.OBNIZID

元記事を表示

Python Node.js 文字操作

Python, Node.jsともに以下の順で変換
16進数文字列 ⇔ バイナリ ⇔ 文字列 ⇔ Unicode(10進数) ⇔ 16進数文字列
そして、デフォルトのエンコーディングはUTF-8
#Python
“`python
str_data = “あ”
encoded = str_data.encode() #b’\xe3\x81\x82′
hex_str = encoded.hex() #”e38182″
encoded = bytes.fromhex(hex_str) #b’\xe3\x81\x82′
str_data = encoded.decode() #”あ”

unicode = ord(str_data) #12354
sixteen = hex(unicode) #’0x3042′
unicode = int(sixteen,16) #12354
str_data = chr(unicode) #”あ”
“`

#Node.js
“`javascript
let strData = “あ”;
let encoded = Buffer.from(strData

元記事を表示

S3に保存されたMP3ファイルをLambdaでGoogle Cloud Speech-to-Textを使って文字起こしする

# S3に保存されたMP3ファイルをLambdaでGoogle Cloud Speech-to-Textを使って文字起こしする

## はじめに
前回の[S3に保存されたwavファイルをLambdaでGoogle Cloud Speech-to-Textを使って文字起こしする](https://qiita.com/haruhiko28/items/55cc892eb2c41f8f12cf)に引き続き、
今回はMP3ファイルを対象に、S3に保存されたMP3ファイルをLambdaでGoogle Cloud Speech-to-Textを使って文字起こしする手順をまとめます。

重複する点が非常に多いので、相違点になるコードの部分だけ([前回](https://qiita.com/haruhiko28/items/55cc892eb2c41f8f12cf)でいう5-9のみ)ご紹介します。

## Code
実行するコードは以下になります。

“`javascript
const AWS = require(‘aws-sdk’);
const speech = require(‘@googl

元記事を表示

[Node.js]カバレッジレポートを出力しよう

現場で、なんとなくistanbulを使用してCI環境を構築しておったが、
Node.jsのスプレッド公文で半端なくエラーが出力されるという自体が発生。。。

なんで!?なんで!?

https://www.npmjs.com/package/istanbul

“`
This package has been deprecated
Author message:

This module is no longer maintained, try this instead: npm i nyc Visit https://istanbul.js.org/integrations for other alternatives.
“`

あー。なるほど。(公式は読みましょう。はいすみません。)

いい機会なので、nycを使ってちゃんと出力してみようと思った次第で。

# 環境を作ってみよう
Dockerじゃないと夜も眠れないので、Dockerで構築してみる。

“`
# 適当に
$ mkdir CoverageNodejs

# Create Dockerfile
$ mkdir do

元記事を表示

nodejsを使ってウエブサーバーを作ろう – majidai

[![Build Status](https://travis-ci.com/dakc/majidai.svg?branch=develop)](https://travis-ci.com/dakc/majidai)[![npm](https://img.shields.io/npm/v/majidai.svg?id=2)](https://www.npmjs.com/package/majidai)[![GitHub license](https://img.shields.io/github/license/dakc/majidai.svg?style=popout)](https://github.com/dakc/majidai/blob/master/LICENSE)
# majidaiとは
majidaiとは、nodejs用のWebフレームワークです。
サードパーティーライブラリが使っていないため非常に軽いです。
データ量 < 50KB

#### インストール
[nodejs](https://nodejs.org/e

元記事を表示

CLS とは?ブラウザとNode.jsで CLS を実装してみます

資料を調べる際に、CLS の存在を知りました。エンジニアリングで結構いいデカップリングのやり方と感じまして、シェアしたいと思います。

# シチュエーション

ブラウザか、サーバーのNode.jsか、どっちでもエラーハンドリング、ユーザートラッキングのニーズは日常茶飯事。例えユーザーを特定しなくても、id をつけて、ユーザーの行為を追跡して、エラーの再現にも重要し、プロダクトの改善にも役たちます。

仮に今エラーハンドリングを書こうと思って、このエラーハンドリングはすべてのエラーを処理しますが、どのリクエストから生み出したエラーを知りたいと

“`javascript
log.error(“Error occured”, req);
“`

このハンドリングは req と結合しちゃった

仮に今このエラーどのユーザーから出たエラー、ユーザーが何をやったかを知りたいと

“`javascript
log.info(“User has done xxx”, user);
log.error(“Error occured by”, user);
“`

ユーザーとも結合しちゃった

元記事を表示

【Javascript】ワンライナーで現在時刻をフォーマットした日付で表示する

getDay()、getHours()とかやってから繋げるのめんどくさい:confounded:

## コード:writing_hand:
“`javascript:ワンライナー
new Date().toLocaleString(undefined, { month: “short”, day: “numeric”, hour: “2-digit”, minute: “2-digit” });
“`

“`javascript:↑改行するとこう
new Date().toLocaleString(undefined, {
month: “short”,
day: “numeric”,
hour: “2-digit”,
minute: “2-digit”
});
“`

“`:結果
8月10日 19:19
“`

### 別のやり方
“`
new Intl.DateTimeFormat(undefined, { [ここにオプション] }).format(new Date());
“`

## 使い方
“`
dateObj.toLocaleString

元記事を表示

laravel+vueプロダクトのローカル開発環境

#書いてあること
Laravelでバックエンド、Vueでフロントエンドの構成のプロダクトをWindowsクライアントで開発する際のクライアントのローカル環境の構築方法。

#手順
##1.「Visual Studio Code(VS Code)」のインストール
公式サイトからダウンロードしてインストール

##2.「VS Code」拡張機能のインストール
「VS Code」を起動する。
アクティビティバーの「Extensions(拡張)」アイコンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83103/fbd9b120-b659-0119-aa91-9530685fbf6f.png)

以下の検索ボックスを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83103/65dd7e9c-f190-e4ea-b46e-89452b4d4314.png)

以下の拡張機能名を入

元記事を表示

OTHERカテゴリの最新記事