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

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

ubuntu18.04でnpm testを使いava実行すると「SyntaxError: Unexpected token {」エラーが出てしまうときの解決方法

なんてことないことでしたがNode.js, npm, avaを使い初めて日も浅くて2~3時間悩んだのでメモです。あまりいないかもしれないですが、他に同現象で困っている人がいたら役立ちますように。

# 現象
初めてavaを使おうと https://www.npmjs.com/package/ava に従ってnpm testをすると以下のエラーとなってしまい実行できない。

“`bash
$ npm test

> ava -v

(node:5301) UnhandledPromiseRejectionWarning: /home/shohei/tmp/20200203/shoheihagiwara-cli/node_modules/ava/lib/node-arguments.js:9
} catch {
^

SyntaxError: Unexpected token {
at createScript (vm.js:80:10)
at Object.runInThisContext

元記事を表示

JavascriptのDate.prototype.toString()系まとめ

new Date()からタイムスタンプを作ってファイル名にしたい時、どのフォーマットにするか毎回調べてるのでまとめる

| メソッド                | 出力される文字列                     | 備考|
|:——————————————————|:———————————————–|:—
| new Date(‘2000-01-01 00:00:00’).toString() | “Sat Jan 01 2000 00:00:00 GMT+0900 (日本標準時)” | |
| new Date(‘2000-01-01 00:00:00’).toISOString() | “1999-12-31T15:00:00.000Z” | |
| new Date(‘2000-01-01 00:00:0

元記事を表示

Hueを使って照明の色で天気予報を認識する

## 1. 億劫なこと

毎日、テレビやスマホで天気予報を確認して服装の選択や傘の有無を考えるのがめんどくさい。

## 2. やりたいこと

当日の天気予報をAPIで取得し、天気・温度に応じて室内照明(Hue)の色を点灯させたい。
想定する手順は以下の通り。

1. 気象情報APIによって、当日の情報(天候と気温)を取得する
1. 取得した天気の情報を元に、照明の色を変化させる

## 3. 環境

– node version : v8.11.3
– Philips Hue Go + ブリッジ

## 4. 実装

### 4.1 準備

モジュールのインストール。

“`
$ npm install request
“`

### 4.2 気象情報APIの利用

今回は無料のAPIを使いたかったため、[openweathermap](https://openweathermap.org/)を利用した。
HPから利用登録してAPPIDを入手。

天気の情報は以下のAPIによってGETできる。

“`
http://api.openweathermap.or

元記事を表示

Elixirのノード、プロセス間通信

# はじめに
プログラミングElixirの「15.2 プロセスの名前付け」を理解するための備忘録です。
概要:とあるコールバックプロセスのPIDを登録し、そのPIDに対して2秒間隔でメッセージを送信するプログラム
異なるノードからコールバックプロセスを登録できるようにする。

# 参考
プログラミングElixir「15.2 プロセスの名前付け」

# 環境
– IEx 1.9.1 (compiled with Erlang/OTP 22)

# 目次
– ソース
– ノード1で実行
– ノード2で実行
– まとめ

# ソース

“`Elixir:ticker.ex
defmodule Ticker do
@interval 2000 # 2 seconds
@name :ticker
def start do
# 関数generatorのプロセスを開始
pid = spawn(__MODULE__, :generator,[[]])
# 開始した関数generatorを名前「ticker」として登録
:global.register_n

元記事を表示

S3にCSVファイルがアップロードされるとLambdaがDynamoDBへデータを挿入します

#概要
S3へjsonファイルがアップロードされるとLambdaがそのファイルの中身を解析して、DynamoDBへデータを挿入します。

#jsonファイルの構成
`data`キーに配列があり、配列の要素はオブジェクトとなっています。

“`json
{
“data”: [
{
“item1”: “sample data1”,
“item2”: 123,
“item3”: “test data1”
},
{
“item1”: “sample data2”,
“item2”: 1234,
“item3”: “test data2”
},
]
}
“`

#主な流れ

1. S3へファイルがアップロードされるとLambdaが起動
2. アップロードされたファイルの中身を取得
3. `data`キーから配列を取得
4. 配列を`forEach`で各要素をDynamoD

元記事を表示

Node.jsで常時フォルダを監視してS3へファイルをアップロードする

#概要
あるフォルダに不定期にCSVファイルが作成されるので、そのCSVファイルをS3にアップロードするプログラムをNode.jsで作成します。
処理に失敗するとAWS SESを使って、管理者へメールを配信します。
loggerも使って何が起こったかを追えるようにします。
[全コードはこちら](https://github.com/TKFM21/monitoring_template)

#フロー
##起動時に監視フォルダとローカルの保存フォルダが存在するかチェック
“`javascript:initial_check.js
const fs = require(“fs”);
const fsPromises = fs.promises;

const initialCheck = async (WATCHING_DIR, DEST_DIR) => {
try {
await fsPromises.access(
WATCHING_DIR,
fs.constants.R_OK | fs.constants.W_OK
);
await

元記事を表示

Node.jsでhtmlのlinkタグなどから外部ファイルを読み込めないときの解決法

Node.jsでJavaScript入門書のサンプルコードを実行したが、htmlのlinkタグとscriptタグでcssとJavaScriptが読み込まれなかった。

なお学習目的のため以下の条件を設けている

– Expressなどのフレームワークは使わない
– サンプルのディレクトリ構造は変えない

# サンプルコード

入門書のコードをそのままここに書くわけにはいかないので、自作のサンプルコードを記しておく。

ディレクトリ構成図

“`
.
├── common
│   ├── jquery-3.4.1.min.js
│   └── style.css
└── samples
├── sample1
│   ├── index.html
│   └── script.js
└── sample2
“`

  
ピンク色の「うんこ」を表示するサンプルコード

“`index.html




元記事を表示

Node.jsでYYYYMMDDの文字列を出力する

#概要
Node.jsを使って現在日時からYYYYMMDDの文字列を出力します。
2020/2/3なら`20200203`となります。
少し工夫しないと`202023`とかになってしまいます。
#実際のコード
“`javascript
const createYYYYMMDD = () => {
const today = new Date();
const monthMM = (‘0’ + (today.getMonth() + 1)).slice(-2);
const dayDD = (‘0’ + (today.getDay() + 1)).slice(-2);
return today.getFullYear().string() + monthMM + dayDD;
};

console.log(createYYYYMMDD); // 20200203
“`

##ポイント
`getMonth()`, `getDay()`で得られる値は、現在の月(日)から1引いた値となります。
そのため1を足して`(today.getMonth() +

元記事を表示

Firebase CloudFunctions x TypeScript をデバッグしながらHotDeploy

# CloudFunctions x TypeScript デバッグしながらホットデプロイできるようにする

## package.json

scriptsを以下のようにします(必要な部分のみ抜粋)

“`json:package.json
{
“scripts”: {
“watch”: “tsc –watch”,
“shell”: “npm run watch & firebase functions:shell”,
“start”: “npm run shell”
}
}
“`

## debug
`npm start`

ソースを保存したら自動的に反映(ホットデプロイ)されることを確認してみてください

元記事を表示

[Node.js]フォルダを配下のファイルも含めて一括削除する(since 2019)

#Overview

フォルダを配下のファイルも含めて一括削除しようかと思ったら意外と過渡期であることが判明。
ググると古いコードが上位にいるため、2019年以降のフォルダ削除の方法を残しておく。

#Target reader

– Node.jsでフォルダをファイルも含めてスマートに削除したい方。

#Prerequisite

なし。

#Body

##Special thanks

今回はstack overflowの内容をなぞるだけなので、必要に応じてリンク先を確認してください。
Remove directory which is not empty
https://stackoverflow.com/questions/18052762/remove-directory-which-is-not-empty

##Node v12.10以降の場合

この回答がすべて。
https://stackoverflow.com/a/57866165

>
“`javascript
fs.rmdir(dir, { recursive: true });
“`

APIリファレ

元記事を表示

package.jsonで環境変数(NODE_ENV)を設定するとき、WindowsでもLinux,Macでも動くようにする

# 概要
**npm start**したいときpackage.jsonで環境変数(たとえばNODE_ENV)をセットしつつ起動したいとき[**cross-env**](https://www.npmjs.com/package/cross-env)をつかうと実行環境がWindowsなのかLinux、Macなのか、といったプラットフォームを意識しなくて良いようにする

## 使用前→Linux用とWindows用で書き換える必要あり

スクリプトは以下のようになる

**Linux,Macなら**

“`json:package.json(使用前)
“scripts”: {
“test”:”NODE_ENV=test jest”
}
“`

**Windowsなら**

“`json:package.json
“scripts”: {
“test”:”set NODE_ENV=test&&jest”
}
“`

このようにプラットフォームを意識して書きわける必要があった

## 使用後→”**cross-env**”で解決

[**cross-env**](htt

元記事を表示

Fn Projectを使ってJavaScriptで書いたfunctionをNodeで動かしてみる

# 概要

このエントリでは、OSSのFaaSサーバである「Fn Project」を使い、JavaScriptの関数をNodeで動かすパターンを扱います。

下図のようなJavaScriptによる足し算の関数をFnのサーバにデプロイして動かします。

![write_node_with_code_server.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65002/ef38d5df-e149-c593-a4fa-11bfbe0e841f.png)

## 想定読者

– Fn ProjectでのJavaScriptプログラムまだ自分で動かしていない方

# 準備

Fn Projectを動かすまでのところは、別エントリ[「OCIのMicro InstanceでCentOSにFn Projectのサーバをインストールしてみる」](https://qiita.com/hrkt/items/e37bab448c8aa1b00117)を参照ください。

# Nodeでfunctionを動かす

作業の基本的

元記事を表示

SYMFONISK(Sonosランプ)とTRADFRIライトを連携させてみた。

# はじめに
2020年2月1日。
とうとう日本でSonosとIKEAのコラボレーションモデルSymfoniskが発売されました!
SymfoniskはBookshelf型とLamp型の2種類がありますが、音と照明の組み合わせに惹かれて
Lamp型を選択しました。

ただ、残念なところが1点あり、上の照明部分と下のSonos部分がバラバラ(連携していない)なのです。

## ゴール
Sonosの音楽再生に合わせて照明を変化させます。

元記事を表示

エンジニア向けSNSアプリを孤独にフルスクラッチした時の技術要素とか苦労話とか

# 作ったもの
エンジニア同士、デザイナ同士、エンジニアーデザイナが一緒に「なんか作ろうぜ」「なんか勉強しようぜ」というつながりを実現できるSNSアプリ

EDICPAT
https://play.google.com/store/apps/details?id=com.engineer_forum.engineer_forum

# 作った動機
エンジニア向けSNSアプリってもう色々あるんでしょうけど、既存の団体に自分が参加する形式とか、作ったものを見てもらうとかの形式だったりすると思います。

そうじゃなくて、未経験者とか、フリーランスエンジニアとか、**そこら辺の仲間と「勉強会やろうぜ」とか「何か作ろうぜ!」ってやりたい。**休日とか、ライトなノリで。自分自身がそういうのに

元記事を表示

iPadだけでCloud9開発環境を構築してみた話

# 初めに
iPadのOSがiOSからiPad OSに変更されiPadを取り巻く環境が大きく変わりました。特にSafariが強化されPCブラウザと遜色がないレベルになりました。

強化されたSafariがあればCloud IDEであるAWS Cloud9を使っていつでもどこへでも持ち歩ける開発環境が手に入るのではないか、日差しが差し込むカフェのオープンテラスでコーヒー片手にドヤ顔しながら開発ができるのではないかと妄想がパーンと弾けてしまったため、さっそくiPad Proを購入して開発環境を構築してみました。[^1]

## 想定読者
記事としては前提知識を要求する記事となっております。(はしょったとも言う)

– AWSでの開発経験があり、どこへでも持ち歩ける開発環境に興味がある人
– 特にCloud9を利用していて、iPadで動かしてみたい人

Cloud9って何という人は事前にAWS Cloud9について調べてください。

## 検証環境
今回の記事では以下の環境にて動作確認を行なっています。環境が異なれば出来ることや対処法が異なる可能性があります。ご留意ください。

– iPad

元記事を表示

【AWS】AWS SDKを利用したNode.jsサンプル – はまったこと、S3クラスのバケット作成など

#はじめに
AWS公式サイトにAWS SDKを利用したNode.jsサンプルについて「はまった点」、「S3クラスのバケット作成関数」についてまとめました

#AWS公式サンプルプログラム
https://aws.amazon.com/jp/developers/getting-started/nodejs/

#前提
– AWSアカウントを取得済みであること
– IAMユーザーを作成済であること
– Gitがインストール済みであること
– Node.jsがインストール済みであること

#手順
– 公式サイトの手順を補足しながら進めていきます。

1.任意のディレクトリを作成します。
2.サンプルプロジェクトのダウンロード

“`console
git clone https://github.com/awslabs/aws-nodejs-sample.git
“`

3.npm install

4.アクセスキーの設定

– credentialsの場所は以下
– ~/.aws/credentials(Windows ユーザーの場合は、C:\Users\USER_NAME

元記事を表示

AWS LambdaのNode.jsのランタイム更新時確認手順書

なかったんで用意しておきました。まだ本番環境でサポート期限間近のランタイムを使っている人は参考にしてください。
※当時はNode.js 8.10系が対象でした。

## TL;DR
– AWS Lambdaのランタイムの更新はダウンタイムがないので本番環境への適用もサービス稼働中でOK
– ランタイム更新時の動作確認は推奨
– 更新はAWSがランタイムサポートポリシーで定めている日付より前に実施する

## 手順
1. 本番環境以外の環境で本番環境にデプロイされている資源と同じものをデプロイする
2. デプロイした環境のLambdaのランタイムを上げる
3. 動作確認を実施
4. 問題なければ本番環境(ST環境 → 本番環境の順番でも)のLambdaのランタイムを更新する

## 気になるところ

#### 廃止(更新)をすぎても更新可能なのか
これについてAWSサポートに問い合わせてみました。
AWSサポート内の過去事例として、廃止(更新)以降でもランタイムの移行(サポート対象バージョンへの移行)が可能だった例があったそうですが、ドキュメントにも明記がないように、それが必ずしも可能と

元記事を表示

Node.js の Rest で Cloud Firestore のデータを削除 (Delete)

“`js:firestore_delete_rest.js
#! /usr/bin/node
// —————————————————————
// firestore_delete_rest.js
//
// Feb/01/2020
//
// —————————————————————
var get_token = require(‘./get_token.js’)

// —————————————————————
console.error (“*** 開始 ***”)

const key_in=process.argv[2]
console.log (key_in)

const token = get_token.get_token_proc()

const project = ‘project-jan25-2

元記事を表示

Node.js の Rest で Cloud Firestore のデータを更新 (Update)

“`js:firestore_update_rest.js
#! /usr/bin/node
// —————————————————————
// firestore_update_rest.js
//
// Feb/01/2020
//
// —————————————————————
var get_token = require(‘./get_token.js’)

// —————————————————————
function patch_proc(token,url,str_json)
{
const args = {
data: str_json,
headers: { “Authorization”: “Bearer ” + token}
}

try
{
client.patch(url

元記事を表示

Node.js の Rest で Cloud Firestore のデータを読む (Read)

“`js:firestore_read_rest.js
#! /usr/bin/node
// —————————————————————
// firestore_read_rest.js
//
// Feb/01/2020
//
// —————————————————————
var get_token = require(‘./get_token.js’)

// —————————————————————
function row_parser(doc)
{
// console.log(doc)
const array_aa = doc.name.split(“/”)
const llx = array_aa.length
const key = array_aa[llx – 1]
const name =

元記事を表示

OTHERカテゴリの最新記事