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

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

Mac + Node.js + Google Sheets APIでGoogleスプレッドシートを参照

採用系のプロダクトを提供している会社でもろもろ担当する予定のAkibinです。
最近は岡村ちゃんにハマってます。めちゃくちゃいまさら感満載ですが、サイコー!
[岡村靖幸 – ビバナミダ](https://www.youtube.com/watch?v=6bH_SAZixqQ)

# やってみたこと
Node.jsとGoogle Sheets APIでGoogleスプレッドシートの内容をMacから参照してみました。
ここらへんの情報はWebに結構多いですが、古くていまいち手順に手間取ったのと[Node.js quickstart](https://developers.google.com/sheets/api/quickstart/nodejs)のアクセストークン取得部分が大まかなので、自分の備忘録の意味も込めて記事にしてみます。

### 環境
* MacOS `12.2.1`
* Node.js `v16.14.2`
* npm `8.5.0`
* Google Sheets API v4
* Visual Studio Code

### 作業概要
1. Google Sheet

元記事を表示

node.js(express)でmysqlに登録したデータのIDを取得する(備忘録)

# MySQLに登録したデータのIDを取得する
MySQLにデータを登録した際、auto_incrementで自動的に一意なIDが与えられる場合を想定しています

“`index.js
const express = require(‘express’)
const app = express()
const mysql = require(‘mysql’)
const cors = require(‘cors’) // APIとして利用する場合は必要
const port = 8000

app.use(express.json())
app.use(cors()) // APIとして利用する場合は必要

const con = mysql.createConnection({
//ご自身の環境に合わせてください
host: ‘localhost’,
user: ‘root’,
password: ‘root’,
database: ‘data’
})

// mysql接続
con.connect((err) => {
if (err) throw e

元記事を表示

Webhookを使って、Stripe Payment Linksで作成した支払いリンクを「先着1名限定」にする

StripeのPayment Linksを利用して、簡単に支払いリンクを作ることができます。

そしてWebhookとPayment Links APIを利用することで、より柔軟に決済リンクを運用することが可能です。

この記事では、Webhookを利用したユースケースのアイディアとして、「先着1名さま限定」の支払いリンクを作る方法を紹介します。

## 実装するもの

– 支払いリンクを利用した決済の完了を受け取るWebhookを実装する
– 支払いが完了したことを判定して、支払いリンクを無効化する
– 決済が失敗した場合は、再度有効化する

### 考慮が必要なポイント

コンビニ決済など、注文後に顧客が別途入金・支払いを行う必要がある決済もStripeではサポートしています。
これらの決済方法では、「期日経過」によって決済が失敗する可能性があります。
そのため、「注文時に無効化するが、決済に失敗した場合は再度有効化する」仕組みを実装する必要があります。

## Node.js(Express)でデモのWebhookを実装する

ここからは、Expressを利用して、Webhook

元記事を表示

備忘録)nodebrewからVoltaに移行する【MAC】

# はじめに
今までnodebrewを使いNode.jsのバージョンを管理してきましたが、バージョンを切り替える際パッケージマネージャーとの依存性でエラーを度々起こし煩わしく感じたので、最近よく聞くVoltaに移行してみようと思いメモ

【実行環境】
macOS Big sur 11.6

# 概要
今まで使ってたnodebrew、yarn、npmを削除し、
新たにvoltaをインストールし、node.jsを使う

# 削除する
今まで使っていたnodebrew、yarn、npmを下記で削除していく
“`:ターミナル
//homebrewでインストールしていたものを削除
brew uninstall nodebrew yarn

//削除できたか下記で確認
brew ls
“`
これで準備OK!と思いつつwhichコマンドでもパス確認したらuserディレクトリのローカル環境に初めた頃の名残かまだいたのでこちらも削除しました。。。
“`:ターミナル
//パス確認したらまだいました・・・
which nodebrew
→/Users/user/.nodebrew/current/bi

元記事を表示

[AWS SAM] Preflight(OPTIONS)をLambda関数で自作する(複数originの許可対応)

# この問題にぶつかるまでの経緯

– 単純でないリクエストでPreflightリクエストが送られるが、そこで特定の2種のoriginからのリクエストのみパスさせたい
– 本番環境では `Access-Control-Allow-Origin: “*”` はもちろんだめなので
– しかし、`Access-Control-Allow-Origin: “https:hoge.com,https:huga.com”` のような形式で複数のorigin を指定することはApiGatewayの仕様上できないらしい
– ではどうするか?次のように考えた
– PreflightリクエストはOPTIONS
– OPTIONSメソッドを自分で作ったLambda関数に統合して、定義したホワイトリストに合致するoriginからのリクエストだった場合パスさせるようにする

# 対応方法まとめ

– 複数originのCORS許可対応をさせたいメソッドについて
– (下記手順内の例ではExampleFunctionというGE

元記事を表示

【PA-API】SDKをガン無視しバニラ実装しようとしたら無事に死んだ件

## はじめに

– 用意されたSDKを安易に無視するのは悪手だった。
– 当初の目的を見失っていた。

そんな自戒を込めた記事です。

ちなみに、[Product Advertising API]((https://webservices.amazon.com/paapi5/documentation/))(以下「PA-API」という。)とはなんぞやという方に説明すると、
[Amazon](https://www.amazon.co.jp/)が提供しているAPIで、商品情報にアクセスすることができるスゴイやつです。

### 筆者について

4月から3年目のSEです。
恥ずかしながら外部APIを使用するのはこれが初めてでした。

### 何をしたか

本の検索機能を実装する際、

#### 検索機能しか使わんし、勉強がてら実装したらええやろ!

と用意されたSDKを無視した結果、土日を溶かしました。
はい、本当にありがとうございました。

とは言っても、[SDK(Node.js)]((https://webservices.amazon.com/paapi5/documentatio

元記事を表示

オープンソース動向

オープンソース関連のプロジェクト動向についてピックアップしました。

https://openjsf.org/blog/2022/02/14/node-js-trademarks-transferred-to-openjs-foundation/

https://events.linuxfoundation.org/openjs-world/

https://cd.foundation/cdf-community-awards/

https://www.businesswire.com/news/home/20220201005513/en/Demand-for-Rapid-Risk-Elimination-for-Linux-at-Scale-Fueled-TuxCare%E2%80%99s-Meteoric-Growth-in-2021

https://jcasman27.medium.com/list/ricoh-994c2fcc8f22

元記事を表示

Google DriveのAPIをサービスアカウント認証方式でNode.jsから利用するメモ

前回書いた記事で調べていて、サービスアカウントを利用する方式も試してみたので記録しておきます。

> [Google DriveのAPIをNode.jsで触る ~ @google-cloud/local-authのサンプル版](https://qiita.com/n0bisuke/items/fbf920cdd7ed99b2fc8c)

## 前提など

– https://console.cloud.google.com にアクセスできる
– Google DriveのAPIをONにしている。

> ![](https://i.gyazo.com/0f53c4422a117c9ef0b021b99077b937.png)

### 環境

– Node.js v17系
– google-api-nodejs-client(googleapis) v100
– https://github.com/googleapis/google-api-nodejs-client

## 1. サービスアカウント利用の準備

こちらの記事が分かりやすかったです。

> 参考: [NodeでGo

元記事を表示

Google DriveのAPIをNode.jsで触る ~ @google-cloud/local-authのサンプル版

既存のメモ通りにうまく動かず試行錯誤しました。

## 認証方式が若干変わった模様……?

以前書いた[Google DriveのAPIをNode.jsから触るメモ](https://qiita.com/n0bisuke/items/4af8f17fb4fe3b9b4831)では、公式の[Node.js quickstart ](https://developers.google.com/drive/api/quickstart/nodejs)に掲載されているコードをもとに実行していましたが、`credentials.json`の作成までは同様で、`token.js`生成のタイミングでリダイレクトエラーが発生するようになりました。

> このサイトにアクセスできませんlocalhost で接続が拒否されました。
> ![スクリーンショット 2022-04-03 3.55.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/982f68aa-9ddc-ebe6-a18d-56d9c6

元記事を表示

Node.js実行時間を測る

# 手軽に計測
“`javascript:node.js

// 開始
var start = performance.now();

for(var i = 0; i < 10000; i++){ for(var j = 0; j < 10000; j++); } // 終了 var end = performance.now(); console.log( `実行時間 = ${end - start} ミリ秒` ); ```

元記事を表示

Node.js 16 on Ubuntu 20.04 セットアップ

Ubuntu 20.04 LTS の標準では Node.js バージョン 10 がインストールされるため、
公式のレポジトリから個別に最新安定版の 16 をインストールする方法

## 参考ページ
Node.js 公式サイト
https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions

Binary for Debian/Ubuntu (公式からリンクあり)
https://github.com/nodesource/distributions/blob/master/README.md

## インストールバージョン
Ubuntu 20.04 LTS
Node.js 16.14.2 LTS

:::note info
動作確認は、Docker上のUbuntuで行なっています
:::

## Ubuntu インストール
(省略)

## Node.js インストール
レポジトリ追加コマンド(Using Debian, as root)を発行
“`shell:/

元記事を表示

今朝のおススメの曲を届けてくれるLINE BOT

## はじめに
 朝は、一日のはじまりなので、良いスタートを切りたい。
 そんなとき、心地よい音楽を聴いて、気分を整えたいと思います。
 LINEは、起き掛けにメッセージが入っていないか見るので、
 おススメの音楽が届いていたら、うれしい気がします。

## 完成イメージ

## 環境
– Node.js
– LINE Messaging API
– Spotify SDK SpotifiApi
– VSCode
– Github Actions

## 作り方
1. LINE Messaging APIの利用登録とチャネル作成*
2. LINEログイン APIの利用登録とLIFFアプリ作成*
3. Spotify APIの利用登録とWebアプリ作成*
4. Github Actionsの設定*

*ほかのQiita

元記事を表示

Node.js: Elastic Cloud の filters の使い方

こちらと同じことを Node.js で記述しました。
[Elastic Cloud の filters の使い方](https://qiita.com/ekzemplaro/items/1ab696e2d230a59b548d)

“`elastic_filter.js
// —————————————————————
// elastic_filter.js
//
// Apr/01/2022
//
// —————————————————————
‘use strict’

import * as https from “https”
import * as fs from ‘fs’

const host=”https://mar29-project.ent.asia-northeast1.gcp.cloud.es.io”
const search_key=”search-******”
const na

元記事を表示

Boomによるエラーハンドリング NodeJS

[hapi/Boom](https://hapi.dev/module/boom/)

インストール
`npm install @hapi/boom`

# 実装
“`index.js
require(‘dotenv’).config()
const express = require(‘express’)
const errorHandler = require(‘./helpers/error’) // ←こちらを指定

// 省略
//

// エラー処理ミドルウェア
app.use(errorHandler)

const listener = app.listen(3000, function(){
logger.info(‘Listening on port ‘ + listener.address().port)
})
“`

ミドルウェア処理

“`helpers/error.js
const boom = require(‘boom’)
const config = require(‘../config/default’)
const log4js = r

元記事を表示

BOM付きCSVファイルを読み込むときの注意点

## 環境
node.js v10.19.0
Ubuntu 20.4

## はじめに
UTF-8のCSVファイルには、BOM付きのCSVファイルととBOMなしのCSVファイルの2種類が存在しています。CSVファイルを読み込んで中身を取得する場合、BOM付きのときは、BOMを削除しないとデータが正しく取得されないことになります。(BOMが付いたままでデータを取得すると、処理に誤りが生じることになります)

CSVファイルを読み込んだら、まずは、BOMが付いているかどうか判断して、付いていれば、データを取得する前に削除する必要があります。

BOMが付いているかどうかを判断する方法は、CSVファイルをダブルクリックして、Excelで開いて、文字化けが起こればBOMが付いていない。文字化けが起こらなければ、BOMが付いていると判断することができます。

CSVファイルをエディタで開いて中身を確認しても、BOMは改行コードのように、目で見えるものではないため、エディタでは直接確認することはできません。

## コードの解説
test_bom.csvをBOM付きで作成します。test_bom.

元記事を表示

fish shellでnvmが使えなくなったときにしたこと

# homebrewでinstallしたnvmが使えなくなった

## 状況
– zshからfish shellに変えた
– fish shellでbrewコマンドを使えるように設定
– zsh使用時にインストールしたnvmはこの時点で使用できていた
– ある日突然nvmが使えなくなった

## 環境
M1 MacBook Air

## 調査
– `nvm`はfish shellに対応していない
– fish shellに対応したサードパーティ製のものが存在する
– zshで使用していた`nvm`を使用するには[base](https://github.com/edc/bass)を使用する必要があるらしい
– [base](https://github.com/edc/bass)はshellでbashコマンドを使えるようにするユーティリティ
## やったこと
調査結果からすでに使用している`nvm`を使用するためにbassを導入することにした。
– 以下を実行してbassを導入する
“`
git clone https://github.com/edc/bass.git
c

元記事を表示

誰でも簡単にブロックチェーンアプリを作る。マイ残高確認アプリを作ろう

こんにちは。営業をやっていたりエンジニアっぽい事をやっています。ブロックチェーンをアプリに組み込むのって難しそうに感じますか?実は各ブロックチェーンプロジェクトからは開発用のSDKが公開されている事があり、これを利用することで簡単に組み込む事が出来ます。

今回の記事は マイ残高確認アプリを作ろう です。前回の記事の続きになるので、まだ読んでいない、やっていない方は以下の記事の手順を踏んでからこの記事に来て下さい

誰でも簡単にブロックチェーンモバイルアプリを開発する – Qiita
https://qiita.com

本記事は連載の最後です(短期連載)

[誰でも簡単にブロックチェーンモバイルアプリを開発する](https://qiita.com/faunsu/items/8966ea9cd054214ee672)
[誰でも簡単にブロックチェーンアプリを作り、送金する](https://qiita.com/faunsu/items/01062a0a7132d3843035)
[誰でも簡単にブロックチェーンアプリを作り、マイ残高確認アプリを作る](https://qiita.com/

元記事を表示

誰でも簡単にブロックチェーンアプリを作り、送金する

こんにちは。営業をやっていたりエンジニアっぽい事をやっています。ブロックチェーンをアプリに組み込むのって難しそうに感じますか?実は各ブロックチェーンプロジェクトからは開発用のSDKが公開されている事があり、これを利用することで簡単に組み込む事が出来ます。

今回の記事は `送金してみよう` です。前回の記事の続きになるので、まだ読んでいない、やっていない方は以下の記事の手順を踏んでからこの記事に来て下さい

https://qiita.com/faunsu/items/9670395a00e93c364151

本記事は少し連載します
[誰でも簡単にブロックチェーンモバイルアプリを開発する](https://qiita.com/faunsu/items/8966ea9cd054214ee672)
[誰でも簡単にブロックチェーンアプリを作り、送金する](https://qiita.com/faunsu/items/01062a0a7132d3843035)
[誰でも簡単にブロックチェーンアプリを作り、マイ残高確認アプリを作る](https://qiita.com/faunsu/items

元記事を表示

Seleniumのセットアップから基本的な使用法のまとめ【Javascript, Node.js, chrome】

Javascriptを用いてSeleniumを動かしたいという方向けに記事をまとめました。
Node.jsにおけるSeleniumのセットアップからJavascripを用いた基本的な使い方をまとめています。

Seleniumがどういったツールなのかなどの説明はこの記事の対象ではありません。

ご参考になれば幸いです。

※私の理解でまとめていますので、間違っている箇所の修正や情報の追加などございましたらコメントください。

# Seleniumセットアップ(Node.js, chrome)

環境:windows10, Node.js
使用言語: Javascript
ブラウザ: chrome

※今回はブラウザはChromeのみを対象としています。

## 1.Selenium libraryのインストール
seleniumをインストールします。
`npm install selenium-webdriver`

## 2.chromedriverのインストール

Chromeブラウザを操作するにはchromeのweb driverが必要になります。

選択肢1 :chrome

元記事を表示

Docker ComposeとGitHubを使用して、Node.js + Express + MySQLの環境構築を行う

# 初めに
Docker Composeを使用して、Node.jsとMySQLのコンテナを作成し、Sequelzieを使用してDBにアクセスするところまでを記載する。
また、Node.jsのコンテナ上でExpressのプロジェクトを1から作成する記事は多く見かけたが、既にあるGitHubのリポジトリ(ExpressとSequelizeを含む)をcloneしてそこから環境を構築していく記事はあまり見受けられなかったので、今回はそちらの手順で行う。(実際に現場で開発する際は、既にGitHubが作成されている場合もあると思われるため)

#### 今回やりたいことの図
![SnapCrab_NoName_2022-4-1_10-29-57_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1229062/bb0c1684-1998-7692-c970-899ba13c904c.png)

# 環境
■ 使用PC
MacOS Big Sur:バージョン11.6

※既に使用PCにはgitを導入状態

元記事を表示

OTHERカテゴリの最新記事