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

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

Google Cloud Functions: 加算

“`js:sum_up.js
/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.sum_up = (req, res) => {
var str_out = “”
str_out += “これはテストです。\n”
str_out += “Good Evening\n”
str_out += “今晩は\n”
str_out += “Apr/04/2022 PM 18:02\n”
const aa = req.body[‘aa’]
const bb = req.body[‘bb’]
const sum = parseInt(aa) + parseInt(bb)
str_out += “aa = ” + aa + “\n”
str_out += “bb = ” + bb + “

元記事を表示

M1 MacにnvmでNode.jsをインストールする

最近M1チップ搭載のMacBook Airを購入しました。
M1以外のMacも同じ方法でインストールできますが、購入記念(?)で書き残しておきます。

# 紹介すること
– M1 Macでnvmを利用するときの注意点
– nvmのインストール
– nvmを利用したNode.jsのインストール

# 検証環境
– macOS Monterey 12.3.1
– MacBook Air(M1, 2020)

# nvmとは
[Node.js](https://nodejs.org/en/)のバージョン管理ツールです。
https://github.com/nvm-sh/nvm#about

## なぜnvmを使うの?
– Node.jsをバージョン管理したいから
– [EC2のチュートリアル](https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html)に紹介されているので信頼性が高そうだから

Node.jsのバージョン管理ツールで

元記事を表示

NVM for Windows利用時にNode.jsバージョン変更後「npm ERR! Unexpected token ‘.’」が出るとき

# 経緯

NVM for Windows 1.1.7を利用中、Node.jsのバージョンを14系から16系に上げた際、
>npm ERR! Unexpected token ‘.’

が出てビルドできなくなってしまう事象が発生。

# 対応

> NOTICE: If you downloaded this version before Dec 15, 2021 and are affected by issue #706, please re-download. This fix was not present in the initial binary and has since been corrected.
https://github.com/coreybutler/nvm-windows/releases/tag/1.1.9

https://github.com/npm/cli/issues/4234#issuecomment-1080927985
のコメントを参考に、
1. まず[NVM for Windows](https://github.com/core

元記事を表示

個人で三菱UFJの口座情報をAPIで取得しようとしたけど…

# 結論から言うと
[API開発者ポータル](https://developer.portal.bk.mufg.jp/)でアカウント登録、シークレットKeyを発行してもあくまでその時点で登録できるのは体験コースプラン、できることはテストデータへAPI経由でアクセスだけで、本番環境へのアクセスは[三菱UFJダイレクト APIサービス・BizSTATION APIサービス](https://developer.portal.bk.mufg.jp/api_service_directbiz)に留意点に記載されている通りでハードル高い感じでした。
![Screen Shot 2022-04-04 at 14.31.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/c4a53ee3-1bc6-d87f-598a-04a4d1240555.png)
まぁそりゃそうか…

以上、採用系のプロダクトを提供している会社でもろもろ担当する予定のAkibinでした。

# やってみたかったこと
いちいち三菱U

元記事を表示

【クライアントサイド編】GraphQLを使うぞ(TypeScript, Next.js使用)

※この記事は「【サーバサイド編】GraphQLを使うぞ」の続きになります。

こんにちは!今回はGraphQLを使ってTodoアプリを開発していきたいと思います。前回作成したサーバサイドと接続していく形です。(Next.jsの使い方には詳しく触れませんのでご了承ください。)

# 目次
[1.使用技術](#1-使用技術)
[2.使用する主なファイルの立位置](#2-使用する主なファイルの立位置)
[3.最初の準備](#3-最初の準備)
[4.データを全件取得](#4-データを全件取得)
[5.データの編集](#5-データの編集)
[6.データの1件取得](#6-データの1件取得)
[7.2つのメソッドを叩く](#7-2つのメソッドを叩く)
[8.型について](#8-型について)
[9.まとめ](#9-まとめ)

# 1. 使用技術
GraphQLではかなり細かく型が設定できるのでJavaScriptを使用しましたが、今回はTypeScriptを使用

元記事を表示

node.js で Google Drive にアクセスする際に認証でハマった

# 症状

公式のクイックスタートに沿って進める。

https://developers.google.com/drive/api/quickstart/nodejs

しかしエラーが出てうまく行かない。

“`
Error: TypeError: Cannot destructure property ‘client_secret’ of ‘credentials.installed’ as it is undefined.
“`

# 原因

サンプルコードにある`credentials.json`をクイックスタートの手順で取得する際に、以下ページに誘導される。

https://developers.google.com/workspace/guides/create-credentials

ここで、以下3種類のキーの取得方法が紹介されている。

– API key
– OAuth client ID
– Service account

どうやらクイックスタートはこのうち、 **OAuth client ID の取得を前提としたサンプルコード**になっているようだった

元記事を表示

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リクエストが送られるが、そこで特定の複数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

元記事を表示

OTHERカテゴリの最新記事