Node.js関連のことを調べてみた

Node.js関連のことを調べてみた

passport-localで詰まった話

# 環境

* Dockerコンテナ内で作業
* Node.js 18.15.0
* express 4.18.2
* passport 0.6.0
* passport-local 1.0.0(たぶん)
* express-session 1.17.3
* ビューエンジンにはpugを使用

# やりたかったこと

* ログインに関する処理は`routes/login.js`に書き、
`app.js`に書く内容は最低限にしたい。

* `/login`にGETでアクセスするとログインページが表示され、
そこにあるフォームにユーザー名とパスワードを入力すると、
`/login/auth`(authって何?)にPOSTリクエストが送られる

* `/login/auth`にPOSTでアクセスすると、passportによってログインができる

…のですが、色々なサイトの見様見真似でコードを書いていたら、
ログインページではログインができているのに、**それ以外のページだとログインできていない**現象が発生しました。

# やらかしたときのコード

もともとは以下のようなコードになって

元記事を表示

Node.jsのrequire.mainについて

# require.main
require.moduleは、モジュールオブジェクトで、Node.jsの起動時にロードされたエントリースクリプト表す。

# 例
Node実行時のディレクトリが /abusolute/path/to で、app.jsを実行する場合。

“`entry.js
console.log(require.main);
“`

Node.jsでapp.jsを実行
“`
node entry.js
“`
コンソールへの出力
“`
Module {
id: ‘.’,
path: ‘/absolute/path/to’,
exports: {},
filename: ‘/absolute/path/to/entry.js’,
loaded: false,
children: [],
paths:
[ ‘/absolute/path/to/node_modules’,
‘/absolute/path/node_modules’,
‘/absolute/node_modules’,
‘/node_mo

元記事を表示

Expressより18倍速いというElysiaJS、Bun圧倒的?

Node.js の Webフレームワークと言えば Express ですが、それより18倍速い、という Bun の Web フレームワーク Elysia(エリシア) を見ていこうかなと思う今日この頃です。

さて今回は、Elysia の Quick Start 周辺を、少し脱線しつつうんちくも差し込みながら眺めようと思います。もし説明が回りくどいと思われる方は、先に本家の [Quick Start ( https://elysiajs.com/quick-start.html )](https://elysiajs.com/quick-start.html) へどうぞ^_^;

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7103/7b1f40eb-331f-c4e9-bde9-9409a08df6b9.png)

それにしても、Express の18倍とは凄いですね。まぁ、ベンチは実際とは違うものですけど、このチャートを見ると、上位の3つが圧倒的です。そしてどれも Bun なのですよ

元記事を表示

JavaScriptでNextCloudからファイルをダウンロードする方法

“`typescript
import fetch from ‘node-fetch’;
import * as fs from ‘fs’;

const nextCloudUrl = ‘http://localhost:8081’;
const username = ‘username’;
const password = ‘******’;
const filePath = ‘/Readme.md’;

const download = async () => {
const url = `${nextCloudUrl}/remote.php/dav/files/${username}${filePath}`;
const response = await fetch(url, {
headers: {
‘Authorization’: ‘Basic ‘ + Buffer.from(username + ‘:’ + password).toString(‘base64’)
}
});

if (!response.ok) {
t

元記事を表示

ゴミ捨てをする人を決めましょう。

## 1. 家事を1人でやらなきゃいけない専業主婦の年収は本来1400万円と言われていますが
家事といえばどんなことがあるのでしょうか。

これだけでも大変そうですね。
テクノロジーの進歩とともに家事に関する商品はかなり進化しているようにも思います。
洗濯機やエアコンなどは遠隔操作ができるようになりました。
ルンバは自動で部屋をスキャニングして掃除をしてくれます。

**しかし**

風呂掃除、トイレ掃除、ごみ捨てなど、ボタン1つでは解決できないようなことも多くあります。
そんな中で今回はゴミ捨てというところにフォーカスしました。

## 2. ゴミ袋はどれくらい溜まったら出しますか
毎週回収される曜日が決まっていて、その日にとりあえず袋を縛って出すというなら、それは大正解だと思います。
しかし24時間出し放題のところも増えてき

元記事を表示

Node.jsのCJSとESM の挙動の違い

# はじめに
Node.jsを久しぶりに触ってCJSとESMでの挙動の違いに少し苦戦してしまったのでその違いをまとめようと思って書きました。

## Node.jsのバージョンの意味
Node.jsの偶数は長期サポートが保証されているもの
奇数は新しい機能を試すためのもの
– Current
– Active LTS
– MAINTENANCE

## CJSとESMの挙動の違い
– __filename, __dirnameへの対応
– require, module.exports
– require JSONで自動でパースされない

“`js
__filename
__dirname
“`
この書き方はCJSでは対応しているけど、ESMでは対応していない
ESMでパスを扱うにはこのようにする
“`js
import { fileURLToPath } from ‘url’;
import { dirname } from ‘path’;

const __filename = fileURLToPath(import.meta.url);
const __dirname =

元記事を表示

BunでMongoDB/mongooseを使う

一昨日、Bunのネイティブ実装であるSQLiteを試してみて動いたのに気をよくして今日はMongoDBをやってみました。

Node.jsでお馴染みの MongoDB 用のフレームワークmongooseを使ってスキーマを作り接続します。

とりあえず、Bunサイトのサンプルを少し補い試しただけなので軽く記録を残しておきます。

Bun>MongoDB

https://bun.sh/guides/ecosystem/mongoose

“`sh
# mongoose をインストールする
mkdir mongoose
cd mongoose
bun init
bun add mongoose
“`
“`sh
# スキーマ用スクリプトを書く
vi schema.ts
“`

“`js: schema.ts スキーマ用スクリプト
import * as mongoose from ‘mongoose’;

const animalSchema = new mongoose.Schema(
{
name: {type: String, required: true},

元記事を表示

Node.jsトラブルシューティング:開発者が直面する10の一般的なエラーとその解決策

# はじめに
こんにちは!今回はNode.jsを使用している時に遭遇する可能性のある一般的なエラーとその解決策について説明します。
通勤中など空いてる時間に読んでいただけると嬉しいです。

## Node.jsとは
Node.jsは、JavaScriptを使用してサーバーサイドのアプリケーションを構築するためのものです。Node.jsは、npmと呼ばれるパッケージマネージャーとともに使用されることが多いです。npmは、Node.jsのパッケージを管理するためのツールです。Node.jsとnpmを使用すると、JavaScriptを使用してWebサーバーを構築したり、コマンドラインツールを作成したり、デスクトップアプリケーションを構築したりすることができます。

# 🤔 Node.jsトラブルシューティング:開発者が直面する10の一般的なエラーとその解決策

1. 📦 **モジュールが見つからない** (“MODULE_NOT_FOUND”)
– プログラムが必要とするモジュールが見つからない場合にこのエラーが出ます。
– 🛠️ **対処法**: モジュール名を確認し、`npm

元記事を表示

簡易的なwebサーバーを作ろう(node http-server axios)

## 前回の続き

前回、Rubyにてバックエンドサーバを立ち上げる記事を投稿しました。
[Rubyのサーバー構築(WEBrickってなんぞ?)](https://qiita.com/hirapg_1123/items/4b78e376e042b51d3938)
今回はフロント側(webサーバー)を簡易的ですがjavascriptで作成していきます。

## そもそもwebサーバーって?
Webサーバーとは、パソコンやスマートフォンなどの端末からHTTP/HTTPSで送られたリクエストに対してHTML、CSS、JavaScriptなどの情報を返す役割を持ったソフトウェアのことを指します。
一般的に、Webサーバーへ接続するためにはブラウザを使用します。

### webサーバーの役割
要は、見る側の要素をブラウザへ返すのを担当するサーバーになります。(ざっくり言うと)

## サーバーを作る前にweb3層構造の話
### web3層構造とは
今回作成する「WEBサーバー」に加えて、前回作成したRubyでの「バックエンドサーバー」、
データを保管する「DBサーバー」の三つをまとめたも

元記事を表示

Bun のオンザフライinstallと、キャッシュ。

Qiita の Advent Calendar 2023 にこの可愛いアイコンでお馴染みの Bun で何か書こうと決めたのだけど、今回は使ってみて意外に便利かなと思ったので Bun>Auto-install あたりをやってみようと思います。

Node.js/npm で、パッケージモジュールがディスク内のあちこちに分散し、無数に同じモジュールを重複して落としまくり、将来のひっ迫を心配しながら管理したり、挙句には、どの階層の node_modules を参照してるのかもわからなくなったりするのは、正直気持ち悪いですよね。

でもまぁ、Node.js が好きなので、やむを得ず我慢してたのですが、Bun を使って頭を切り替えると、そのあたりはすっきりしてかつ高速になり気持ち良いかも?と思う今日この頃です。

#### 注意
Bun はまだ20

元記事を表示

Ubuntu22.04上でTypeScriptの環境構築

## Node.jsをインストール
公式から直接インストールすることもできますが、一般的にはバージョン管理ツールを使用することが推奨されているので、ここでは代表的なバージョン管理ツールであるnvmを使ってインストールします。

### nvmをインストール
[nvmの公式](https://github.com/nvm-sh/nvm#installing-and-updating)に従ってコマンドを打っていきます。環境に合わせて以下のどちらかを実行します。

“`
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
“`
“`
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
“`

以下は実行結果の最後のほうの抜粋です。

“`
=> Appending nvm source string to /home/test/.bashrc
=> Appending

元記事を表示

Node.js と GridDB を使用して Unity ゲームデータを保存する

## はじめに

この投稿では、**Feed The Animals** というシンプルなゲームを作ります。このゲームでは、バックエンドサーバーとして Node.js を、ストレージとして GridDB データベースを使用します。

## プロジェクトの実行

GitHub リポジトリからプロジェクトの[ソースコード][1]をクローンします。

“`sh
git clone https://github.com/junwatu/unity-node.js-griddb.git
“`

ディレクトリをプロジェクトのソースコードに変更します。

“`sh
cd unity-node.js-griddb
“`

ゲームサーバー用に Node.js の依存関係をインストールします。

“`sh
cd app\server
npm install
“`

### ゲームサーバー

ゲームを起動する前に、まずゲームサーバーを起動してください。プロジェクトのソースコードから `app\server` フォルダに移動し、ターミナルで以下のコマンドを実行してください。

“`sh
npm

元記事を表示

NestJS から MySQL に接続する

# はじめに
この記事では、NestJS から MySQL への接続手順について記載します。

# 開発環境
開発環境は以下の通りです。

– Windows11
– VSCode
– Node.js 20.5.0
– NestJS 10.0.0
– TypeScript 5.1.3
– MySQL 8.0.33
– MySQL2 3.6.3
– TypeORM 0.3.17

# パッケージのインストール
MySQL への接続に必要なパッケージをインストールします。

“`
npm install –save @nestjs/typeorm typeorm mysql2
“`

“`
npm install –save-dev @types/node
“`

# “`TypeOrmModule“` のインポート
次にルートのモジュールである “`AppModule“` に “`TypeOrmModule“` をインポートします。
“`forRoot()“` の引数に MySQL への接続情報を記載します。

“`app.module.ts
import

元記事を表示

RockyLinux OS 9にNodejs 20をインストール(AppStream)

# はじめに

Application Stream(AppStream)を利用してRockyLinux OS 9にNodejs 20をインストール

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2026-04がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

“`shell-session
# cat /etc/redhat-release
Rocky Linux release 9.3 (Blue Onyx)

# yum module list nodejs
Last metadata expiration check: 0:00:38 ago on Thu Nov 23

元記事を表示

AlmaLinux OS 9にNodejs 20をインストール(AppStream)

# はじめに

Application Stream(AppStream)を利用してAlmaLinux OS 9にNodejs 20をインストール

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2026-04がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

“`shell-session
# cat /etc/redhat-release
AlmaLinux release 9.3 (Shamrock Pampas Cat)

# yum module list nodejs
Last metadata expiration check: 0:00:25 ago on Thu

元記事を表示

RockyLinux OS 8にNodejs 20をインストール(AppStream)

# はじめに

Application Stream(AppStream)を利用してRockyLinux OS 8にNodejs 20をインストール

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2026-04がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

“`shell-session
# cat /etc/redhat-release
Rocky Linux release 8.9 (Green Obsidian)

# yum module list nodejs
Last metadata expiration check: 0:00:37 ago on Thu No

元記事を表示

AlmaLinux OS 8にNodejs 20をインストール(AppStream)

# はじめに

Application Stream(AppStream)を利用してAlmaLinux OS 8にNodejs 20をインストール

## サポート

本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2026-04がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### インストール

“`shell-session
# cat /etc/redhat-release
AlmaLinux release 8.9 (Midnight Oncilla)

# yum module list nodejs
Last metadata expiration check: 0:00:35 ago on Thu Nov

元記事を表示

【GPT Crawler】URLのみでGPTsを作成!

# 🌐 GPT Crawler: Create GPTs with Just a URL! : URLのみでGPTを作成!
こんにちは、皆さん!今回はGPT Crawlerを使ってURLのみでGPTsを作成する方法を紹介します。

リポジトリのリンクは[こちら](https://github.com/builderio/gpt-crawler)です。

https://github.com/builderio/gpt-crawler

私が改変したものは[こちら](https://github.com/yuyuyu2118/gpt-crawler-y)です。アップデートしたら記事も更新します。

https://github.com/yuyuyu2118/gpt-crawler-y

## 🎓 はじめに: Introduction
GPTsって革命的なんですけど、GPT Plusに登録していてもファイルの数が10個までと制限されていたり、まだまだ使いづらい部分がありますよね。

**少ないファイル数で効率的に狙った質問を返してもらうには、データを加工した上でアップロードする必要がありま

元記事を表示

【初心者Nodejs】東大生限定の掲示板を作ってみた

Webアプリを作ってみたいなと思って、Nodejsの勉強がてら東大生限定の掲示板を作ってみた。

https://www.akamonnews.com/landing

![](https://storage.googleapis.com/zenn-user-upload/40f2290a036d-20231121.jpg)
*クリックするとリンク先に飛ぶリンク共有掲示板みたいな*

作る過程は楽しかったし、同時に難しかったので記録を残しておく。

僕はガチ初心者だし完全なアマチュアなので、すごく基本的な内容だということは念頭に置いといてね。もしかしたらこの記事で間違いとか、セキュリティ上のリスクみたいな部分があるかもしれないから、その時はコメントで教えてくれるとありがたい。
あと言葉もかなり雰囲気・イメージで使っていると思うので、例えばパッケージ・ライブラリの細かい違いとかはお手柔らかに。文系なので。

ちなみにまだユーザーが皆無なので、もしこれを見ているあなたが東大生である、あるいは東大生の知り合いを知っているとかだったらぜひシェアしてみてね。

## 1.コンセプト・基本方針

元記事を表示

node.jsでのdynamodb操作をまとめた(sdk v3)

# node.jsでのdynamodb操作まとめ

node.jsでのdynamodb操作操作をする機会があったため、各種操作方法をまとめておきます。
環境は以下です。

– node.js v18
– aws sdk v3

## 公式サイト

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-dynamodb/

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_lib_dynamodb.html

## 想定するDynamoDBスキーマ

– パーティションキー
– AccountType
– ソートキー
– user_id
– 属性
– role_id

## 共通

DynamoDBClientのみで頑張って書いても大丈夫ですが型定義など書かないといけないのでめんどくさいです。
DocumentClientを使うとスッキリかけます。
詳しくは公式サイトを確認してください。

元記事を表示

OTHERカテゴリの最新記事