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

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

nvm for Windows 導入

Node.js のバージョン管理ツールにnvm for Windows を導入しました
その時の記録を書きます

## 環境
– OS: Windows 10
– Node.js, npmインストール済

## nvmとは
– Node Version Manager の略で、Node.js のバージョンを管理するためのツール
– Node.js の異なるバージョンを切り替えることができる
– [nvm公式によると](https://github.com/nvm-sh/nvm)はLinux環境に対応しており、WindowだとWSLなどLinuxの環境が必要らしい
>nvmはPOSIX準拠のシェル(sh、dash、ksh、zsh、bash)、特に以下のプラットフォームで動作します:UNIX、MacOS、Windows WSL。
– 今回は、Window対応版の [nvm for Windows](https://github.com/coreybutler/nvm-windows) を利用する

## Node.js 削除
– [Microsoftの記事](https://docs.mi

元記事を表示

SequelizeでDBのテーブルとデータを作成し、CRUD操作してみる(2)

 [前回の記事](https://qiita.com/furi-kake/items/c47b098cdcf053bcf287)で、Sequelize-cliを使ってDB上にテーブルを作成し、そこにレコード(シードデータ)を挿入するところまでできた。今回はその続きで、SequelizeによるDB上のデータのCRUD操作を行ってみる。前回Sequelize-cliを使って作ったテーブルとデータをそのまま使っていく。

# 開発環境
* `sequelize: 6.21.0`
* `sequelize-cli: 6.4.1`
* `node: 17.1.0`
* `express: 4.18.1`

# 準備

 レコード取得系のメソッドに関しては、デベロッパーツールでデバッグポイントを張って、検索したモデルのインスタンスの中身をコンソールで見るとかするのもめんどくさいので、DBの検索結果をそのままクライアント側に返すAPIサーバを、Node.jsのフレームワークであるexpressを利用して構築し、返ってきたjsonレスポンスを確認するという形にしたい。

 まずは以下のひな型を用意して

元記事を表示

SequelizeでDBのテーブルとデータを作成し、CRUD操作してみる(1)

# プロローグ
 `Sequelize`は、公式によるとPromiseベースのNode.jsのORMツールとのこと。
ORMについてはちゃんとは分かってないけど、「コード上でのデータベース操作を簡単にしてくれるツール」的なモノらしい。これに関しては、色々調べるとインピーダンスミスマッチとかいうロックバンドみたいな名前の概念がでてきたりとかして深みにはまりそうだったので、ワイは「なんか便利らしいしそれ使うんならORMを使わない方法と比べてどうとかはとりあえずいいや」ってことにしたんで今回はスルーするンゴ。

 今回は`Sequelize-cli`というCLIツールを使ってアプリケーションプロジェクトの環境を構築していく手段から、Sequelizeを通したDB周りの構築とDB操作までを2記事にわたって網羅的に解説していく。

# 開発環境
* `sequelize: 6.21.0`
* `sequelize-cli: 6.4.1`
* `node: 17.1.0`
* `npm: 8.1.2`

# 準備
 Sequelize-cliはSequelizeと

元記事を表示

【Windows】Node.js のバージョンアップ

Node.js のバージョンアップをしたときの記録を書きます

## 環境
OS: Windows 10
Node.js: v14.16.1

## Node.js バージョン確認方法
– PowerShellまたはコマンドプロンプトを開く
– `node -v`コマンドを実行する
“`
PS C:■■■■■■■■■> node -v
v14.16.1
“`

## 手順
– Node.jsの公式サイトにアクセスする
– https://nodejs.org/ja/download/
![スクリーンショット 2022-08-13 205028.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2667439/1a3285bf-0995-3109-1edd-27b6609a062b.png)

– Window版のインストーラをダウンロードする
– 私はnode-v16.16.0-x64.msi をダウンロードしました
– インストーラを実行する
– インストールが完了するまで待つ
– イ

元記事を表示

Node.js Stream 個人的まとめ

# ストリーム(Stream)とは

– ストリームとはファイルのデータ(Buffer等)を読み込んだり、読み込んだデータを別のファイルに書き込むことができるインターフェースのこと
「インターフェース」とは複数のものをつなぐ技術や方法

>A stream is an abstract interface for working with streaming data in Node.js. The node:stream module provides an API for implementing the stream interface.
>There are many stream objects provided by Node.js. For instance, a request to an HTTP server and process.stdout are both stream instances.
>Streams can be readable, writable, or both. All streams are instances of EventEmitt

元記事を表示

Nodejsでフォルダ内のファイルから繰り返し処理でmoduleを読み込む

こんにちはAmpoiです。Skuronosukeから名前を変えて初めての投稿となりますが、この記事ではDiscordJSでコマンドの情報と各コマンドの実行内容を繰り返し処理で取得したい時などに使えるNodejsでフォルダ内のファイルから繰り返し処理でmoduleを読み込む方法を紹介していきます。

# やりかたー
fsモジュールを使ってフォルダ内のファイルを繰り返し処理で取得し、それらのファイルの中にあるデータをfsコマンドで取得・リストに格納します。

# コード
“`js
//./commands/hogehoge.js

//commandsフォルダ内にあるファイルの一例
module.exports = function(){
return {
data:{
name: “bot”,
description: “どういうことBOT「どういうこと」”,
options: [
{
type: 3,
name: “moji”,
required: true,

元記事を表示

あるWebサービスの開発メモ・Docker + Nextjs + TypeScript + mui + supabase-js + react-query + swiper の導入手順

– [あるWebサービスの開発メモ・目次ページに戻る](https://qiita.com/ishi32/items/152a1ecf7eeee7a8fb57)

## Github

まずは Github に新規リポジトリをつくります。「Github なんか使わないよ」という方は、Vercel へのデプロイが git push をトリガーにしているのでぜひ導入を検討してみてください。

![スクリーンショット 2022-08-12 9.40.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539175/8afa5fee-d5f0-358d-8801-8886a414e2e6.png)

– [Create repository]

クライアントPCで clone します。

“`
$ git clone [url]
Cloning into ‘sirokuro-dev7’…
remote: Enumerating objects: 3, done.
remote: Counting obje

元記事を表示

【Node.js】検証と実践:Streamの基本的な使い方

`fs.Readable`と`fs.Writable`を使って画像ファイルをコピーするプログラムを作り

ストリームの基本的な使い方を検証、理解していきます。

利用するNode.jsのバージョンはv16.xです。

## この記事は何?

次のような方向けになると思います。

– Node.jsのstream APIを一通り目を通した人。
– 具体的に`writable.write()`を使った最低限レベルでのストリームを使った実装方法を知りたい人。

`fs.writeFile()`のような一旦ファイルの内容をすべてメモリを展開するメソッドを使わずに
メモリが節約できるストリームを使っていく方法を模索していきます。

ストリームの基本的な使い方といいつつ、
`trasform`と`duplex`ストリームについてはこの記事で扱いません。
`Readable`と`Writable`のみ扱います。

この記事の流れですが、
まず誤解したままでざっくり実装してみて、その後間違っている部分を公式の説明をみたりして解消していき、改善したコードに作り直していきます。

なげーです。

##

元記事を表示

あるWebサービスの開発メモ

この記事を書き始めたのは 2022年8月11日、山の日という祝日です。[弊社](https://unremoted.com)ではある [Webサービス](https://sirokuro.site)を開発しています。9月にサービス開始を目指しており、その道中で知り得た知見というか手順といったものをまとめています。

## [技術スタック](https://qiita.com/ishi32/items/12f722004e914e9119aa)

## 開発環境
– [Intel chip の macOS PC に、Webフロントエンドの開発に必要なツールをインストールする手順](https://github.com/unrcom/devenv_mac_intelcpu)
– [Docker + Nextjs + TypeScript + mui + supabase-js + react-query + swiper の導入手順](https://qiita.com/ishi32/items/c7baded80262cd1fe429)

## [本番環境](https://qiita.

元記事を表示

S3にあるPDFを取得してZIPにする

# 要件 : S3にあるPDFを取得してZIPにする

利用するライブラリ
– フェッチ処理 : [Axios](https://axios-http.com/)
– ファイル圧縮 : [Archiver](https://www.archiverjs.com/)
– S3からPDFのオブジェクト取得 : [AWS-SDK for javascript](https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/index.html)

### アップロードのシーケンス(処理手順)

“`mermaid
sequenceDiagram
participant フロント
participant バックエンド(例 download.ts)
participant S3

フロント->>バックエンド(例 download.ts): ①ZIPダウンロードのリクエスト

par ②PDF取得
バックエンド(例 download.ts)->>S3: S3.getObject()

元記事を表示

[チャット]SNSのテンプレートを作成してみた[解説編]

# はじめに
 SNSテンプレートの完成版はすでにGitHubのリポジトリに上げています。
 この記事ではそのリポジトリを元に、node.jsとexpressとsocket.ioの紹介をします。なお、環境作成としてリポジトリに上げているmongodbとnginxの解説はほとんど行いませんので悪しからず。

リポジトリのクローンなどを雑に解説したヤツ

https://qiita.com/king_dog_fun/items/fb833a71115199c02c39

# serverのディレクトリ構成

 express-generatorで生成される雛型を元に構成しています。大きな変更点と言えばconfigディレクトリの追加とsocket.jsの作成でしょうか。
 express-generatorのインストールと実行は次のコマンドで行うことが出来ます。試してみてね☆

“`
npm install express-generator -g
express –view=pug directory_name
“`

 ちーなーテンプレートエンジンはpugです。
 以下に書いてある

元記事を表示

[認証]SNSのテンプレートを作成してみた[解説編]

# はじめに
 SNSテンプレートの完成版はすでにGitHubのリポジトリに上げています。
 この記事ではそのリポジトリを元に、node.jsとexpressとpassportを使用した認証機能付きのwebサイトの作り方を紹介します。なお、環境作成としてリポジトリに上げているmongodbとnginxの解説はほとんど行いませんので悪しからず。

リポジトリのクローンなどを雑に解説したヤツ

https://qiita.com/king_dog_fun/items/fb833a71115199c02c39

# serverのディレクトリ構成

 express-generatorで生成される雛型を元に構成しています。大きな変更点と言えばconfigディレクトリの追加とpassport.jsの作成でしょうか。
 express-generatorのインストールと実行は次のコマンドで行うことが出来ます。試してみてね☆

“`
npm install express-generator -g
express –view=pug directory_name
“`

 ちーなーテンプレー

元記事を表示

SNSのテンプレートを作ってみた

# はじめに
 最近のプログラマーはコードを打たないらしいです。そりゃ、プログラマーたるもの誰もが経験しているとは思いますが、サンプルコードの挙動をテストするためにタイピングをしていれば、どこかでミスが発火するものです。おまけに環境を自分で整えるとなれば作業時間はかなりのものとなります。
 そこで今回はnode.jsでSNSを作るためのテンプレートとなりそうなものを作成してきたので、共有したいと思います。内容はexpress-generatorを基礎としたnode.jsでチャット機能、ログイン機能をつけたというものです。mongodbとnginxも使用しています。
 なお、この記事では解説はせず、GitHubからクローンの方法を置いておくだけだ。解説は以下のURLで行っています。

**passportについてのざつ~な解説**

https://qiita.com/king_dog_fun/items/d6b3565e624b96d6ea9c

**socket.io(chat)についてのざつ~な解説**

https://qiita.com/king_dog_fun/items/f

元記事を表示

Rollup.jsによってNode.js/TSプロジェクトをバンドルと圧縮

## 0.初めに

+ 普段、 `tsc` を使って `TS` プロジェクトを `JS` に変換しますが、バンドルツールを使わないと、変換した後のサイズが大きくなってしまうことが多いです。この記事は`Rollup.js`を使って、バンドルと圧縮を実装します
+ この記事は`TS`による開発した`Node.js`プロジェクトに基づいて展開します

## 1.インストール

まずは、`Rollup.js`をインストール
[公式サイト](https://rollupjs.org/guide/en/#installation)

“`shell
yarn add -D rollup
“`

`Rollup.js`のプラグインをインストール

“`shell
yarn add -D @rollup/plugin-commonjs rollup-plugin-terser rollup-plugin-typescript2
“`

プラグイン説明

+ `@rollup/plugin-commonjs`:プロジェクトが使用する依存関係を`rollup`に伝えます
+ `rollup

元記事を表示

Docker-composeでnode.jsのUDP通信をテスト。

# はじめに
 世の中には自分の良く使うプログラム言語をローカル環境に入れたくないという人がいるものです(自分)。そのくせしてサーバーの方で環境を整えるのもめんどうという人もまたいます。でもでも、それでも、プログラムの挙動がどうなるのか自分自身で確かめたい。そんな人のためのDocker-compose環境を共有します。
 因みに…一番大事なことの気もしますが…テストするのはタイトル通りUDP通信です。Docker コンテナ同士を内部ネットワークで繋いでUDP通信しています。

# GitHubからクローン

“`
git clone https://github.com/DogKingFun/AandB.git
“`

 予めGitHubに用意しておいたリポジトリからデータを持ってきます。中のAとBのディレクトリにあるnode.jsのプログラムを書き替えてもらえれば十分なテストが可能だと思います。

# Docker-compose

“`
docker-compose up
“`

 2022/08/09日のバージョンでは、以下のようなログが流れます。

“`
Recrea

元記事を表示

インストーラから入れたnode.jsを削除しnvmをインストールしてnode.jsとyarnも入れる

# node.jsの削除(mac)

①フルパスを取得してどこにnodeがあるか調べる
“`
which node
/usr/local/bin/node
“`

②削除コマンド
“`
sudo rm -rf /usr/local/bin/node

/以降は which node で調べたパスを入力
“`

③削除できたか確認
“`
node -v
bash: command not found: node

node -v で上記が表示されれば削除完了
バージョンが表示された場合は①〜③を繰り返す
“`

④npmの削除
“`
sudo rm -rf ~/.npm
“`

⑤npmが削除できたか確認
“`
npm -v
bash: command not found: npm
“`

[参考:ローカルからnode.jsを削除する](https://qiita.com/gaipoi/items/406d6c4b1ccd1733318a)

***

# nvmのインストール

①nvmをインストール
“`
curl -o- https://raw.githubu

元記事を表示

Error: You must provide the URL of lib/mappings.wasmエラーが出た場合の対応

jestでテストを実行したら、下記のエラーが。

“`
Error: You must provide the URL of lib/mappings.wasm by calling SourceMapConsumer.initialize({ ‘lib/mappings.wasm’: … }) before using SourceMapConsumer
“`

[You must provide the URL of lib/mappings.wasm by calling \`SourceMapConsumer.initialize\` · Issue #35607 · gatsbyjs/gatsby](https://github.com/gatsbyjs/gatsby/issues/35607)によればNode.jsのバージョンに起因する問題のようです。ちなみエラーが出た時にはv18.7.0を使っていました。

ということでv16にすると正常に終了します。

“`
% npm run test

> blastengine@1.2.3 test

元記事を表示

動画編集のジャンプカット(ジェットカット)をNode.jsで自動化する

![jumpcut-by-nodejs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289248/74996ec8-97f1-379d-5da2-d9619826c575.png)

詳細は以下の記事にまとめています。

https://tsuyopon.xyz/2022/08/09/jumpcut-by-nodejs/

解説記事では、サンプルコードのどこを特に注目すると良いかなどもまとめているので、動画編集作業の自動化に興味がある方は、こちらのご確認いただけたらと思います^^

# この記事を読んでわかるようこと

今回の記事では主に以下の2つを話していきます。

1. 今回紹介するジャンプカットツールの効果
2. Node.jsを使った動画編集のジャンプカットツールの実装方法

# ジャンプカットの比較動画

– 自動カット前 : https://youtu.be/UAtewkSgSJI
– 自動カット後 : https://youtu.be/gKwhcJgIZlM

# サンプルコード

元記事を表示

npmコマンドが何も出力せずに終了する問題を解決した話

Macbook Air M2をセットアップ中の出来事になります。備忘録としてメモを残しておきます。

# 結論

– .npmがシンボリックリンクだった
– 移行アシスタントはシンボリックリンクは解決してくれない(そのまま移行する)ので注意

# 現象

`npm i` を実行すると、何も出力せずに終わる。

“`
% npm i yarn -g

%
“`

npmはある(ホームディレクトリは ~ に置き換えています)。

“`
% which npm
~/.nodenv/shims/npm
“`

# 疑ったもの

## nodenv

nodebrewにするも現象は変わらず。

## M2

M1で普通に動いているけど。M2でまた何か特有の問題が起きているのかと思ったけれど、情報はなく。

# 調査

nodenvはコマンド実装が分かりづらかったので、結果的にnodebrewにしたのが解決につながったかも。`nodenv` の npm はこれ(ホームディレクトリは ~ に置き換えています)。

“`bash
#!/usr/bin/env bash
set -e
[ -n

元記事を表示

【Express.js】リダイレクト時に未保存のセッションデータを確実に保存する

バグなのか仕様なのか分からないですが、`express-session`のデータ保存先(`sessionStore`)として、データベースやファイルなどI/Oに時間のかかるストアを選んだときに、リダイレクト後のリクエストで未保存のセッションデータを参照してしまうことがあったため解決策の備忘録です。

“`js
function beforeRedirect(req, res, next) {
// sessionデータを更新してからにリダイレクトするときにストア保存時の遅延により、
// リダイレクト後の画面で保存前のセッションデータを参照してしまう場合があるため、
// 確実にセッションを保存してからリダイレクトする
const redirect = res.redirect;
res.redirect = function () {
if (req.session) {
req.session.save(() => {
redirect.apply(this, arguments);
});
} els

元記事を表示

OTHERカテゴリの最新記事