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

Node.js関連のことを調べてみた2022年01月29日
目次

Flex Messageがしんどいメモ

LINE Bot開発話です。

Node.jsのSDKだとFlex MessageのJSONをラップしつつさらにJSONでtype指定を行う感覚なので、[シミュレータ](https://developers.line.biz/flex-simulator/)で生成されたJSONをどこからどこをコピペして使えるのかがいつも忘れます。

> ![スクリーンショット 2022-01-29 11.26.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/97e963f2-def0-d251-82fe-b2e262bd9ee3.png “スクリーンショット 2022-01-29 11.26.07.png”)

## コピペ用テンプレ

こちらの記事を参考にしつつ

https://qiita.com/n0bisuke/items/c2d80be33a85d944b294

“`js
return client.replyMessage(event.replyToken, {
type: “f

元記事を表示

ES Modulesではないwindows-1252モジュールのインストール

タイトルの通りです。
解決に時間がかかったので共有します。

nodeのwindows-1252モジュールを普通に

~~~
npm i windows-1252
~~~
でインストールするとES Modules版がインストールされるため、node実行時に
**Must use import to load ES Module / require() of ES modules is not supported**
というエラーが発生します。

requireでモジュールを読み込む場合はバージョンを指定してインストールします。

~~~
npm i windows-1252@0.1.0
~~~

元記事を表示

SequelizeでのバリデーションでInput欄枠に色を付ける

## はじめに
 Node.js + Express + sequelizeを勉強中です。フォームからレコード追加するところでバリデーション作成しました。バリデーションにひっかかた際テキストでの表示しかなかったので、ユーザービリティを上げるために、エラーのでた入力欄に色をつけようと思いました。検索しても出てこなかったので、備忘録も兼ね投稿しました。

## sequelizeとは
>Node.js用のORMライブラリ。
ORMはザックリ言うと「関数やオブジェクトを使って直感的にデータベースを操作しようぜ」なこと。
(参照)[Sequelizeとは?【Node.js】](https://penpen-dev.com/blog/sequelize-node-orm/)

## 環境
+ windows10
+ node     16.13.1
+ express  4.16.1
+ ejs          2.6.1
+ sql

元記事を表示

Stripe Webhookで、Payment Links(支払いリンク)の設定漏れをリカバリーする

Payment Links(支払いリンク)のAPIリリースと同時に、Webhookイベントについても受信できるようになりました。

今回はWebhook連携のユースケースとして、「設定漏れ項目の通知・自動リカバリー」を紹介します。

# サポートしているWebhookイベント

– `payment_link.created`: 支払いリンクが作成された時に実行されます
– `payment_link.updated`: 支払いリンクが更新された時に実行されます

# Webhookのユースケース(例)

Webhookを利用することで、以下のような連携が期待できます。

– [Connect]子アカウントがリンクを作成したことをSlackに通知する
– 支払いリンクを無効化したことをユーザーにメールで通知する
– Taxの設定など、設定を必須としたい項目の設定漏れを検知する

今回は3つ目の「設定漏れ検知」のサンプルを紹介します。

# Stripe CLIでWebhookをローカルテストする

[Webhook設定画面](https://dashboard.stripe.com/t

元記事を表示

lambdaからECS:RunTaskを使用し、Taskを起動する

業務でLambdaの実行時間に引っかかる処理を切り分けるためにLambda->ECSTask実行を行いました。
ServerlessFlameWorkを使用したNode.js/TypeScript環境でECSのTaskを実行する手順です。
Python3&boto3を使用した記事は[こちら](https://qiita.com/ken992/items/1d4ee5e33c04744d1d1c)です。

## 環境
“`
Node v14.7.0
“typescript”: “^4.1.3”
“serverless”: “^2.23.0”,
“serverless-esbuild”: “^1.17.1”,
“`

## 結論
“`typescript:ecsTask.ts
import { ECSClient, RunTaskCommand, RunTaskCommandInput } from ‘@aws-sdk/client-ecs’;

const client = new ECSClient({
region: ‘ap-northeast-1’,
});

cons

元記事を表示

Typescript + React 環境構築

# create-react-appを使わずにReactの環境構築

##### まっさらの状態からReactを使ってブラウザで「Hello World」を表示する

※npmではなくyarn
なので`yarn init`でlockファイルを作成

## Webpack
`yarn add -D webpack webpack-cli webpack-dev-server html-webpack-plugin`

## babel
`yarn add -D @babel/core @babel/runtime @babel/plugin-transform-runtime @babel/preset-env babel-loader`

## React
`yarn add react react-dom`
`yarn add -D @babel/preset-react`

## Typescript
`yarn add -D typescript @babel/preset-typescript @types/react @types/react-dom`

## tsconfi

元記事を表示

Azure Functionsのnodeでローカルで動かしアクセスすると「Microsoft.Azure.WebJobs.Script: Did not find any initialized language workers.」と出て落ちる

## 現象
dotnetのコマンドラインからプロジェクトを作成し、ローカルで動かしてみるもレスポンスは返ってこず、

“` bash
[2022-01-27T01:36:18.348Z] Host lock lease acquired by instance ID ‘0000000000000000000000008075DF07’.

Functions:

HttpExample: [GET,POST] http://localhost:7071/api/HttpExample

For detailed output, run func with –verbose flag.
[2022-01-27T01:39:59.235Z] Executing ‘Functions.HttpExample’ (Reason=’This function was programmatically called via the host APIs.’, Id=6b911e52-02a6-4493-ba8b-953be86341b9)
[2022-01-27T01:40:43.719Z]

元記事を表示

Node.jsでJavaScript実行環境を作り「音ゲー」を試してみた

Node.jsのなんたるかをよくわからないまま使ってみました。MIDIキーボードで演奏の練習をしたかったので「musicope」アプリを動作させるためです。casioの「chordana play」から始まり、「synthesia」や「linthesia」も試しましたが一長一短だったのでいろいろ比べてみました。

# 短く言うと

:::note info
Node.jsをインストールしてJavaScriptの動作環境をつくることができました。
:::

:::note warn
「musicope」を動作させることができました。ただし、MIDIの設定がむずかしいので使いこなせそうにありません。
:::

これをlinux mintで動作させました。

* 「ソフトウェアの管理」から「Nodejs」をインストール
* 「ソフトウェアの管理」から「Npm」をインストール
* 以下のサイトの「Code」をクリックしてリポジトリをzipファイルとしてダウンロード

https://github.com

元記事を表示

Electron Tips ~便利なモジュールや小技~

Electronを使用した開発を最近行ったので、個人的に便利だったモジュールや小技などをまとめていこうと思います。

使用した**Electronのバージョンは15系**です。

## Electronのメインプロセス側の基本コード
基本のメインプロセスの構成はだいたい誰が書いてもこのようになると思いますので、こちらをベースに紹介していこうと思います。

すべてのプラットフォームで動作する結合絶対パスを作成するためにnode.jsの標準モジュールである`path`を使用しています。

“`jsx:main.js
//だいたいこんな感じ
import path from “path”;

let mainWindow;

const createMainWindow = () => {
mainWindow = new BrowserWindow({
width: 1200,
height: 800,
webPreferences: {
preload: path.resolve(__dirname, ‘

元記事を表示

[Vulnhub]SHURIKEN: NODEの脆弱性診断

# はじめに

以下よりダウンロードできます。

https://www.vulnhub.com/entry/shuriken-node,628/

## 免責事項

:::note alert
本記事で紹介する内容は、教育目的または脆弱性について仕組みを理解し周知、啓発を行うためだけに作成しております。
記載されているコードを実行した場合の損害は一切責任を負いません。
また、ハッキング行為をいかなる稼働環境・サービスに対しても行わないでください。成功しなくても試みること自体が違法行為にあたる場合があります。
上記の内容を十分理解された方のみ本記事をお読みください。
:::

また、本記事の記載内容で、法的または倫理的に問題があると思われる箇所、その他お気づきの点などがございましたら、お手数ですがコメント欄までお知らせください。

## SHURIKEN: NODEについて

> 難易度:易/中
前回の侵入事件後、Shuriken Companyはインフラを移転し再構築することを決定した。今回は異なる技術を使用し、安全性を確保することを保証している。果たしてそうだろうか?そうでないこと

元記事を表示

webpack×Babelでコード変換(トランスパイル)しているNode.jsのstack traceを読みやすくする

## 以下の記事を参照して頂ければと思います

https://note.com/shift_tech/n/n3983a73de8a7

**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です**

## 補足
ソースコード全体は以下を参照。

https://github.com/yuta-katayama-23/node-express/tree/114afff10ba36c33e1d85641e774245b740d1bae

元記事を表示

[aws-sdk S3] 署名付きURLの発行

業務でS3の署名付きURL(GetObject)を発行を行いました。
備忘録として残しておきます。

## 環境
Docker node:16-alpine
“typescript”: “^4.5.4”
“@aws-sdk/client-s3”: “^3.46.0”,
“@aws-sdk/s3-request-presigner”: “^3.47.0”,

## 結論
“`typescript:s3.ts
import {
GetObjectCommand,
S3Client,
} from ‘@aws-sdk/client-s3’;
import { getSignedUrl } from ‘@aws-sdk/s3-request-presigner’;

const client = new S3Client({
region: ‘ap-northeast-1’,
});

/**
* 署名付きURLを発行する
*
* @param bucket
* @param key
* @param expiresIn
* @returns 署名付きURL
*/

元記事を表示

環境変数にアクセスする方法(Node.js)[メモ用]

##手順

* npm i dotenv でインストール
* rootディレクトリに.envファイルと.gitignoreを作成
* require(‘dotenv’).config(); を記入
* .envファイルに他の人に知られたくない情報を書く (APYKEYなど)
* GitHub等にコードを公開する場合は .gitignoreファイルに.envを記載
* .envファイルの情報にアクセスする場合は process.env.につなげる

##コードで解説

外部に公開したくない情報を記載

“`php:.env

MONGODB_URL=mongodb+srv://…..cluster0.ysnsu.mongodb.net/myFirstDatabase?retryWrites=true&w=majority

“`

GitHub等にコードを公開する場合は .gitignoreファイルに.envを記載

“`php:.gitignore
.env
“`

“`php:index.js

import express from ‘express’;
im

元記事を表示

Node.js が無理やり終了した時も処理したいときのメモ

Socketio を個人的に触っていて、
Node.js の終了時に処理を入れようと調べていて、
こちらの方の記事を参考にしていました。

https://qiita.com/Hiroki_Kawakami/items/f95b0cdbd201557b18cd

上記記事の情報に加え、
Terminalが強制終了されてしまったときなど、
雑に終了される時に処理をする方法をメモ。

## テストコード
各イベントが発火しているのかをテストするために、
発火したイベントとタイムスタンプを JSONにメモるような処理にした。
※console.logを出しても、Terminalが閉じてしまったら読めないため

“`js:server.js

// サーバー構築
const http = require(‘http’);
const fs = require(‘fs’);
const server = http.createServer(requestListener);

/* —————————————————
終了

元記事を表示

‘useFindAndModify’ が有効なオプションでない時のエラー (mongoose を使ってmongoDBに接続する)

##エラー
Node.jsにおいてmongooseでmongoDBに接続するコードで下記のように書くと

“`
エラーコード

mongoose.set(‘useFindAndModify’, false);

await mongoose.connect(‘connectionURL’, {
useNewUrlParser: true,
useUnifiedTopology: true
});
“`

“`
Error: `useFindAndModify` is an invalid option
“`

上記のようなエラーが起こる。

##原因
原因としては、不要なコードがあることが考えられます。

“`
mongoose.set(‘useFindAndModify’, false);
“`

##解決法
なので、上記のコードを次のように書き換えます。

“`

mongoose.set(‘useFindAndModify’, false); //いらない

mongoose
.connect(‘connectionURL’, {
u

元記事を表示

Web Apps (Node.js) と MongoDB を連携させる

# はじめに
Azure 公式ドキュメントのチュートリアル「[チュートリアル:Azure で Node.js と MongoDB のアプリを構築する](https://docs.microsoft.com/ja-jp/azure/app-service/tutorial-nodejs-mongodb-app?pivots=platform-linux)」を試してみたので、注意点とか、詰まった箇所について補足メモしておきます。

image.png (556.6 kB)

# 目次
– 開発環境
– 手順
1. ローカル Node.js アプリ を作成する
2. Mongo DB 環境を準備する
3. node アプリを Azure にデプロイする
4. Azure Web Apps への

元記事を表示

Webの勉強はじめてみた その26 〜Basic認証とCookie〜

N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第3章18,19節です。

Basic認証

:::note
Authorization というヘッダの値に、エンコードされた ID とパスワードを含めて通信することで認証する方式
:::

暗号化されていない方式でエンコード(Base64)されているので、盗聴や改竄のリスクがある。
`atob`を使うと元の情報が見えてしまう。

http-auth

`http-auth` パッケージを利用する。
`yarn add http-auth@4.1.9`

“`javascript
//Basic認証のモジュール
const auth = require(‘http-auth’);
//basic関数
//realmプロパティに、Basic認証に保護する領域を規定する文字列 => 説明書き(認証が必要な範囲を書く)
//コールバックにユーザー名とパスワードのチェック => 認証するパターンを書く
const basic = auth.basic(
{ realm: ‘Enquet

元記事を表示

Node.js: 接種状況ダッシュボードのデータを使ってワクチン接種済者をカウントする

こちらで行ったのと同じ計算を Node.js で行いました。
[Python3: 接種状況ダッシュボードのデータを使ってワクチン接種済者をカウントする](https://qiita.com/ekzemplaro/items/e892ab821eef343d4860)

必要なライブラリーのインストール

“`bash
npm install csv
npm install date-utils
“`

“`js:count_vaccination.js
#! /usr/bin/node
// —————————————————————
// count_vaccination.js
//
// Jan/26/2022
//
// —————————————————————
‘use strict’

var fs = require(“fs”)
var csv = require(‘csv’)
requir

元記事を表示

[Stripe Updates] NoCodeでオンライン決済を受け付ける”Payment Links(支払いリンク)”に、管理用APIが登場しました!

「コードを一切書かずに、クレジットカードをはじめとするオンライン決済を処理するリンクを作成する仕組み」として、Payment Links(支払いリンク)は2021年に登場しました。

https://stripe.com/jp/payments/payment-links

1度商品・料金を登録し[支払いリンク]を作成すれば、後はそのリンクを顧客に踏んでもらうだけで、商品の販売や定期会員の決済を行うことができます。

# これまでの[支払いリンク]でできなかったこと

これまでは、このリンクを作成するためにDashboardにアクセスする必要がありました。
そのため、以下のようなユースケースに対応することができませんでした。

– WordPressやHubSpotといった外部サービス側で、リンク作成・埋め込み・表示を一元化したい
– アドホックに料金・商品を生成し、ユーザーに応じた支払いリンクを発行したい
– バッチ処理を利用した、「一定期間または特定時間のみ有効なリンク」を作成したい
– [Connect] 出店者が、顧客向けに支払いリンクを作成できるようにしたい

https:/

元記事を表示

CentOS系へのNodeJSインストール手順

# CentOS系へのNodeJSインストール手順
## nodejsインストール

### repo追加
“`bash
curl -fsSL https://rpm.nodesource.com/setup_17.x | sudo bash –
“`

### repo確認
“`bash
ls -1 /etc/yum.repos.d
nodesource-el8.repo <- 追加されている ``` ### nodejs インストール ```bash sudo yum install nodejs -y ``` ### インストール確認 ```bash node -v v17.4.0 <- バージョンが表示される ```

元記事を表示

OTHERカテゴリの最新記事