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

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

データを削除するAPIを作る

今回は削除用のAPIを作成します。APIの使用としては以下のようにします。

“`:APIの仕様
メソッド DELETE
エンドポイント /api/delete/{id}
“`

## やりたいこと
・一覧の行に「削除」ボタンを設置して押下するとDELETEのリクエストを送る
・サーバ側でリクエストを受け取りデータを削除する

修正内容

https://github.com/kusakari-kai/rgforcommunication/commit/a26e8df513c47e55d8d6969c9d2e5cf3268ecc45

### 画面を整備する
途中で改行されてしまっていたので一列に表示して削除ボタンを表示する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110457/73f21d83-6661-d388-733b-782e35a36c58.png)

### DELETEボタンを押下する際の関数のCall元のイベントハンドラを作る
押下するとchecktstという関

元記事を表示

Node.jsでString.ReplaceAllが使えないんだが!!

## 使えなかった

– とある案件を引き継ぎ、Express.jsで書かれたサーバーサイドを書いていた。
– CSV的にカンマで区切られた数値列をスペース区切りに変更したかったので、

“`javascript
const nums = ‘0.0,10.0,20.0,30.0,40.0,50.0,60.0’
// こんな感じの文字列を

// 0.0 10.0 20.0 30.0 40.0 50.0 60.0
// ↑こんな感じのスペース区切りにしたい

// ということで
const nums_space = nums.replaceAll(‘,’, ‘ ‘)
// こんな感じで処理したい
“`

– こんな感じのことをした

– すると `nums.replaceAll(…) is not function` みたいな感じで怒られた

## Node.jsのバージョンが古かった

– 調べてみると単純な話、Node.jsのバージョンが古くて `String` 型に`replaceAll`が実装されていないということだった
– `replaceAll`は比較的新しいES

元記事を表示

TypeScriptでclass名の文字列から動的にclassのインスタンスを生成する

クローラーの開発をしていて、Site1Crawler,Site2Crawlerといった形で数字の違うクローラーを作成、class名から動的に別々のクローラーのインスタンスを生成したかったのでその方法です。

ディレクトリは適当でいいのですが、今回4つのファイルを作成します。

– Crawler.ts
– 量産されたclassをまとめて書いておくファイル
– BaseCrawler.ts
– 継承される元となるclass。インターフェースとして書いてもいいが今回はclassで作成する
– Site1Crawler.ts(Site2Crawler.tsなどこのファイルを量産していく)
– BaseCrawlerを継承した動的に呼び出されるclass
– CrawlerFactory.ts
– 動的に呼び出す部分を記載するFactory class

まず最初に継承元となるBaseCrawlerのclassを作成します。

“`Javascript:BaseCrawler.ts
export default class BaseCrawler
{
pu

元記事を表示

Node-Postgres で大量データを bulk insert した時の備忘録

node-postgresを使用してbulk insertする時に苦労したので、備忘録を残す。

## 実行環境

– linux
– nodejs
– postgres

## 性能比較
1行ずつのINSERTとの性能比較については、こちら([1000万件のINSERTを映画1本分ぐらい時間節約できた話](https://datumstudio.jp/blog/postgresqlでinsert速度比較/))を参照。

## postgres の準備

下記サイトを参考に node-js から postgres に接続する準備をする。
[`Node-Postgres` を使ったときに、試行錯誤してできた Postgres クラス](https://qiita.com/masaks/items/3ee1b5a06a95315a7ae7)

## 大量データを 1000 行単位に分ける
paramsにはINSERT時のパラメータを配列で格納しておく。
“`js:例
[
[‘001’, ‘hoge’],
[‘002’, ‘fuga’],
[‘003’, ‘piyo’],
]

元記事を表示

Vue 3.0 composition apiによるAWS サーバーレス開発  シリーズ② サーバー側環境設定

# サーバー:Nodejs 16.0 + サーバーレスフレームワーク + serverless-layersプラグイン + sequelize
##アクセス構成
AWS Api -> Lambda(sequelize) -> DBアクセス
## DBの構築 Test用テーブル追加
“`
CREATE TABLE IF NOT EXISTS `member` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(255) NOT NULL,
`last_name` VARCHAR(255) NOT NULL,
`age` INTEGER,
`createdAt` DATETIME ,
`updatedAt` DATETIME ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
insert into member(first_name,last_name,age) value(“fn

元記事を表示

Node.jsでAbortControllerを使って、child_processを強制的に終了させる方法

はいさい!ちゅらデータぬオースティンやいびーん!

# 概要
AbortControllerを使って、Node.jsで実行した`child_process`を強制的に終了させる方法を紹介します。

## 背景
本記事は、前回投稿した、Node.jsでffmpegを使って動画を変換する記事を元に作成しています。

変換の作業に時間がかかりすぎて、サーバーの負荷が過ぎないように、ある一定の時間が経っても子プロセスが終了しなかったら、強制的に終了させる必要があります。

ここで、Abort Controllerを使ってShellに終了のシグナルを送ることができますので、解説していきたいと思います。

## 事前知識
前回の記事を読んでいただければわかりやすいかと思います!

https://qiita.com/tronicboy/items/f3f5d2dbcade2a8e01d9

# コード
前回のコードのPOSTのところを修正します。

`spawn`の引数の設定オブジェクトに、`signal`を追加します。
“`typescript:src/index.ts

app.po

元記事を表示

Node.js・Expressでffmpegを実行し、アップロードした動画を変換する方法

はいさい!ちゅらデータぬオースティンやいびーん!

# 概要
本記事では、Node.jsの`child_process`の`spawn`を使って、アップロードされた動画をffmpegで変換する方法を紹介します。

## 背景
Node.jsでPythonなどのスクリプトを実行して、その結果を持ってレスポンスを返すようなコードが書きたいことが動機で本記事の内容を勉強することになりました。

Node.jsのイベントループシステムは非常に強力で、TypeScriptも共に使うと、JavaScriptの弱点も補ってほぼ無敵だと思います。

しかし、JavaScriptはイベントループがあっても、スレッドは一つ。そこで問題になるのは、大量のリクエストを捌くIOというより、時間がかかるプロセスが問題です。

また、Pythonの機械学習モデル、他言語のスクリプトなど、JavaScriptでは実行できないプロセスもあります。

そこで、助けになるのは、Node.jsの`child_process`機能です。

child_processは、サーバーのshellでコマンドを実行し、その結果を持ってN

元記事を表示

nodejsとytdl-coreを使用しYouTubeの動画をダウンロードする(コード付き)

今回はytdl-coreを使用し動画や音声をダウンロードするコードを紹介していきます。

必要なもの
– nodejs
– ytdl-core(npmでインストール)

“`
npm i ytdl-core
“`

早速ですがコード
“`js:index.js
const ytdl = require(‘ytdl-core’)
const fs = require(‘fs’)

const download = ‘audio’
const url = ‘https://youtu.be/…’

if(download === ‘audio’) {
ytdl(url, {
filter: “audioonly”,
fmt: “mp3”,
}).pipe(fs.createWriteStream(“download.mp3”));
}

if(download === ‘video’) {
ytdl(url, {
fmt: “mp4”,
}).pipe(fs.createWriteStream(“download.mp4”));
}
“`

dow

元記事を表示

AizuHack LINEBot勉強会 Vol.4

# AizuHack LINEBot勉強会 Vol.4

## 資料一覧

– [LINEBotとは](https://docs.google.com/presentation/d/1U1vl67gJNOdO5in7H__jPXWieT3Lv0cFmv350AmAKHA/edit?usp=sharing)
– [AizuHack LINEBot勉強会 Vol.1](https://qiita.com/shinbunbun_/items/7efef6db31514831143d)
– [AizuHack LINEBot勉強会 Vol.2](https://qiita.com/shinbunbun_/items/4034e9c2c7553ed3107e)
– [AizuHack LINEBot勉強会 Vol.3](https://qiita.com/shinbunbun_/items/0dfc42584518dc60e3e7)
– AizuHack LINEBot勉強会 Vol.4(本記事)

## はじめに

こんにちは、会津大学学部二年のしんぶんぶんです。
今回はGCP(Google

元記事を表示

【TypeScript + Express】 “npm run dev”でError: Cannot find module が出たら

こんにちは。

Qiita1発目の記事を何にしようかと悩んでいたのですが、ちょうど
「TypeScriptでバックエンドつくってみよー」
と、半分軽い気持ちで作っていたら見事ハマったので備忘録。

nodemonからts-node-devに変更し、package.jsonでパスエイリアスをフルパスで表記したら、エラーが発生しなくなったので紹介する。

__※ts-nodeがインストールされていることが前提条件__

何にハマったのか

REST APIをnodemonで実行したら、モジュールエラーが発生した。

エラー文は以下。
“`
Error: Cannot find module ‘./index.ts’
“`

解決法

1. 「npm uninstall nodemon」でアンインストール。

→解決方法とまではいかないが、理由としてはモダンなツールではないらしいので。
というよりも、ググって出てきた方法では解決できなかった。

2. 「npm i ts-node-dev」でインストール

→これ

元記事を表示

Node.jsとytdl-coreでYouTubeをDLする時につまずいた点(DLできない、無音になる)

# はじめに
YouTube動画をDLしようとWebで検索すると、怪しげな広告が表示される海外のサービスばかりだったりします。こういったサービスを利用するのはちょっと怖いなと思うので、YouTube動画をDLできるアプリが欲しいと思い調べてみました。

調べてみたところ、[wintyoさん](https://qiita.com/wintyo)が [youtube-downloader](https://github.com/wintyo/youtube-downloader) というアプリを公開していたため、動かしてみることにしました。([wintyoさん](https://qiita.com/wintyo)ありがとうございます)
その際に、動画ダウンロードの処理でつまずいた点があったため記事にしてみようと思います。

動かすにあたって以下の記事を参考にさせて頂きました。
– [YouTube動画をダウンロードするWebアプリを作る](https://qiita.com/wintyo/items/4dd93221ae4094abd80a)
– [Node.jsでYoutube動画を

元記事を表示

Node.js・Expressでmulterを使って、ファイルをアップロードする方法

はいさい、ちゅらデータぬオースティンやいびーん!んな、がんじゅー?(みんな、元気?)

# 概要
本記事では、Node.jsのexpressフレームワークで、multerというミドルウェアを使って、FormDataからファイルを取って、アップロード機能をバックエンドに追加する方法を紹介します。

## 事前準備
### Node.jsのローカルインストール
https://nodejs.org/en/download/

## 目次
1. Expressのセットアップ
1. \

の作成
1. multerの導入

# Expressのセットアップ

## パッケージをインストールする
今回は、TypeScriptを使ったExpressプロジェクトを元に作っていくので、まずは、新規フォルダーを作って、`package.json`を作ります。

また、筆者はyarn推奨派なので、全てのコマンドはyarnを使います。
“`
mkdir express-multer-upload

元記事を表示

Webpacker::Manifest::MissingEntryError 解消法 – Rails version 6.0 環境

## 対象環境
node.js : v16.x.x
rails : v6.0.x

## 具体的なエラー前動作
“`:terminal
rails new xxx
cd xxx
rails g scaffold user
rails db:create
rails db:migrate
rails s
“`
として、
http://localhost:3000/users
にアクセスすると下記のエラーが発生

![Screen Shot 2022-07-11 at 11.58.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2646082/3bf33b38-d7f7-251e-5b27-00c41ad72a48.png)

## 対処法
### 1.railsのバージョンを6.1.xに変更する(推奨)
参考:
コマンド
Lhttps://qiita.com/seijMAN/items/ac363f6688c72f4ea186
インストール可能なバージョン参照
Lhttps://rubygems.

元記事を表示

Nuxt3にElementPlusを導入する。

# やる事
Nuxt3にElementPlusを導入して、サクッと画面を作れるようにする。

# 動作環境
– Windows10Home64bit(21H2)
– node v16.16.5
– element-plus v2.2.6
– nuxt v3.0.0-rc.4
– sass v1.53.0
※ChromOSのLinux環境でも動作確認済み

# 手順
## プロジェクト作成
公式ドキュメント通りにやる。Nuxt2系と違い細かい質問は聞かれないし必要最小限の要素だけが用意される。

“`
npx nuxi init sample-elementplus
cd sample-elementplus
npm i
“`

## 動作確認
親の名前並みに見たコマンドで動作確認。とても起動が速い。

“`
npm run dev
“`

## ElementPlusの導入
### 導入
ひとまずnpmからインストール

“`
npm i element-plus @element-plus/theme-chalk sass
“`

公式ドキュメント曰く、Vueのプロジェ

元記事を表示

どこからでもDatabricks SQLに接続する

[Connect From Anywhere to Databricks SQL \- The Databricks Blog](https://databricks.com/blog/2022/06/29/connect-from-anywhere-to-databricks-sql.html)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

# Databricks SQL向けGo、Node.js、Python、CLIオープンソースコネクターの発表

開発者がお好きなアプリケーションからDatabricks SQLへの接続をシンプルにできるようにするために、本日、[Go](https://github.com/databricks/databricks-sql-go)、[Node\.js](https://github.com/databricks/databricks-sql-nodejs)、[Python](https://github.com/databricks/datab

元記事を表示

ffmpegとnodejsを利用し動画ファイルの詳細を表示する

記事を初めて書くのであまり慣れていませんがとりあえずコードと必要なもの
– nodejs
– ffmpeg

ffmpegのダウンロード

https://ffmpeg.org/download.html

“`Js:index.js
const readline = require(‘readline’).createInterface({
input: process.stdin,
output: process.stdout
});
const { exec } = require(‘child_process’);
readline.question(‘どのファイルの詳細を表示しますか?: ‘, (answer) => {
if(answer !== ”) {
exec(‘ffprobe -hide_banner -loglevel quiet -show_streams -print_format json ‘+answer, (err, stdout, stderr) => {
if(!err) {
var data = JSON.pars

元記事を表示

npm install実施時、npm ERR! code EJSONPARSEを始めとするエラーが発生

npm install laravel-mix –save-devを実行時に下記のようなエラーが発生。

“`linux:表示されたエラーメッセージ
npm ERR! code EJSONPARSE
npm ERR! path c:\xampp_new\xampp80\htdocs\laravel\manual/package.json
npm ERR! JSON.parse Unexpected token “/” (0x2F) in JSON at position 48 while parsing near “…scripts\”: {\n // \”dev\”: \”vite\”,\n …”
npm ERR! JSON.parse Failed to parse JSON data.
npm ERR! JSON.parse Note: package.json must be actual JSON, not just JavaScript.

npm ERR! A complete log of this run can be found in:

元記事を表示

POSTしたデータを登録するAPIを作る

先日は一覧を取得するAPIを作りましたので今日はPOSTしたデータを登録するAPIを作ります。登録機能は認証も必要ですが後回しにしてまずは登録を優先します。

## やりたいこと
・画面上に入力フォームを設置してボタンを押下でPOSTリクエストを送る
 登録APIのエンドポイントは /api/work
・POSTリクエストを受け取りBODYの内容をDBにINSERTする

### 画面の作成
ソースコードが長くなってきたので要点だけ記載します。ファイルが確認したい場合はgitを参照お願いいたします。ボタンを押下すると入力内容をPOSTでリクエスト送付します。レスポンスを受けて画面を更新するなどが通常の動きですがここでは省略します。

“`tsx:pages/work.tsx
const handleSubmit = (event: React.FormEvent) => {
event.preventDefault();
let data = new FormData(event.currentTarget);
axios.post(“/

元記事を表示

【簡単】Node.jsにsassをインストールする手順

## はじめに
– Node.jsにsassをインストールした際に、エラーになったので、解決手順を備忘録として残します。

## 環境
– Mac
– node バージョン:16.15.1
– npm バージョン:8.11.0

## 前提
– Node.jsはインストール済み(公式サイトから推奨版をインストール)
[Node.js公式サイト](https://nodejs.org/ja/)

## 状況

– sassのバージョンを指定してインストール
“`
$ npm install –save-dev node-sass@4.14.1 sass-loader@10.0.2
“`

– 上記のコマンド実行後に、下記エラー【抜粋】が発生。

“`
npm ERR! gyp verb check python checking for Python executable “python2” in the PATH
npm ERR! gyp verb `which` failed Error: not found: python2
“`

## 原因
– 参考記事によると、

元記事を表示

UnityとFirebaseでDAppsゲームを作る

# はじめに
### 今回作ったもの
Symbolブロックチェーン上のウォレットとchrome拡張のSSS_Extensions(以下SSS)を利用したユーザー認証でプレイできるゲーム
ゲーム内容はハイアンドローみたいなもの

https://halad-dev.com/

SSSの追加はこちらから

https://chrome.google.com/webstore/detail/sss-extension/llildiojemakefgnhhkmiiffonembcan

## 概要
#### 環境
– Firebase (Auth, Functions)
– Unity 2021.3.4f1 (WebGL)
– UniTask
– Symbol ブロックチェーン
#### DAppsゲームとは?
この定義は人によって分かれると思うが、この記事ではブロックチェーン用のウォレットを使ったユーザー認証を行うゲームと定義してます。

例えるならば
![SSS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

OTHERカテゴリの最新記事