- 1. Single executable applicationsを使ってnodeアプリケーションを簡単にビルドできるようにする
- 2. Node.js app Apache2下で起動
- 3. Node.jsでログインサーバーを作る – 2
- 4. npm script で呼ばれたjs内でTerminal側の作業ディレクトリを参照する
- 5. GROWI7.1へのアップデート
- 6. nvmのインストール(MacBook Air, M1, 2020)
- 7. tsxでError [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol ‘c:’
- 8. フォローしているQiitaユーザが作成した記事を1日1回、スラックに通知してみた ~AWS100本ノック~ 13/100
- 9. discord bot (discord.js)を GCP 無料VM で常時実行
- 10. discord bot 作成 (discord.js) 2024/11版
- 11. Lambda(Node.js)のDockerイメージをデプロイしてみた。(その3,EC2上でDocker上のLambdaを実行してデバック)
- 12. Azure Web AppsでHonoを動かすメモ
- 13. Azure Web AppsのGitHub Actions Yamlファイルをアップデートする
- 14. JWTにおける認証のイメージを調べた
- 15. Prisma でモデル名を取得したい
- 16. Node.js+Playwrightのセットアップ:LTSとCurrentに気をつけよう
- 17. Nest.jsのアーキテクチャーと基本3概念「モジュール」「コントローラ」「サービス」
- 18. #Javascript #プログラミング # #atcoder や #paiza の #競技プログラミング で気づいた #nodejs の不可解な挙動
- 19. Honoとは何か(初心者向き)
- 20. nvm installに失敗するときの対処法
Single executable applicationsを使ってnodeアプリケーションを簡単にビルドできるようにする
# はじめに
こんにちは、Never3924です。
NodeのSingle executable applicationsを使って簡単にビルドができるようにしよう、という記事です。# 環境
NodeJSのv20.1.2
Windows 10
で動作確認。# 本題
早速やりましょう。ていうか以下のコードをコピペです。
“`build.bat
@echo off
setlocal enabledelayedexpansion
chcp 65001mkdir dist
cd distset CALLPOWERSHELL_RETURN=””;
echo Collecting information…
call :CALLPOWERSHELL “$text = Get-Content -Path “../package.json” -Raw; $pattern = ‘\s+\”main\”\s?:\s?\”(.*)\”‘; if($text -match $pattern) { $filename = $matches[1] };echo $filename”
set F
Node.js app Apache2下で起動
Node.jsアプリをApacheサーバのVirtualHostにて、ドメインを割り当て、更にアプリを起動し、Proxy設定にて、起動したlocalportを指定し、80のPortとして、アクセスさせる。
下記にその手順を記載します。
1、nodeの環境に、foreverモジュールをInstallしてあること。2、httpd.confのVirtualHost設定例を下記に示します。
“`
ServerAdmin webmaster@mail.example.com
DocumentRoot /var/www/html/example
ServerName message.example.com
ErrorLog logs/example.com-error_log
CustomLog logs/example.com-access_log common
ProxyRequests off
Order deny,allow
Node.jsでログインサーバーを作る – 2
# 初めに
今回は、前回のログインサーバーを改造します(?)
# 前回とちがうところ
前回は一つのユーザーまでしか認証ができませんでしたが、今回はユーザーデータをjson形式で管理して複数のユーザーの認証ができるようにします# ファイル構成
今回のファイル構成は以下の通りです。
“`
—|–public |
|–main.html
|–style.css
|–main.js|–Server.js
|–userdata.json“`
# 準備
まず、以下のコマンドをcmdで実行して、ログインサーバーのフォルダーに移動ください
“`
cd C:\Users\\Downloads\
“`
※仮のpathです。実行するときはC:\~の部分を作成したフォルダのpathに変更してください次に、以下のコマンドを入力します
“`
npm install express cor
npm script で呼ばれたjs内でTerminal側の作業ディレクトリを参照する
“`js:runner.cjs
const process = require(“node:process”);// これは nodejs の作業ディレクトリ
const CWD = process.cwd();// こっちは terminal(bash | PowerShell | CMD) の作業ディレクトリ
// PWD – bashから参照可
// INIT_CWD – bash | PowerShell | CMD で参照可
const PWD = process.env.PWD || process.env.INIT_CWD;
“`
GROWI7.1へのアップデート
# 概要
今回、家の環境でGROWIを7.0.15から7.1にあげようという試みをしてたんですが、結構変更点が多くて思いのほか引っかかってしまったので、備忘録的な意味も込めて記しておきます。誰かの参考になれば幸いです。# 環境
* Ubuntu22.04(wsl)
* GROWI 7.0.15→7.1へのアップデート
* docker compose# ハマった点1
今回のGROWIのアップデートでハマってしまったのは、おそらくyarnからpnpmに変わった部分が大きいのではないかなと思います。
GROWIのアップデート時に`docker compose build`を実行するタイミングがあるかと思いますが、これがうまくいきません。こちらの問題は中津川さんのQiitaを参照して解決しました。本当に感謝です。。
https://qiita.com/goofmint/items/69171d242b342d97650a#dockerfile%E3%81%AE%E4%BF%AE%E6%AD%A3やることとしては、growiフォルダ内の`Dockerfile`の編集です。
nvmのインストール(MacBook Air, M1, 2020)
# はじめに
Macにnvmをインストールしていきまーすhttps://github.com/nvm-sh/nvm
# 開発環境
– MacBook Air, M1, 2020
– nvm 0.39.7# 導入
1.ターミナルを開きます2.nvmをインストールします
~~~bash
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
~~~3.~/.zshrcを編集します
~~~bash
$ vi ~/.zshrc
~~~~~~.zshrc
export NVM_DIR=”$HOME/.nvm”
[ -s “$NVM_DIR/nvm.sh” ] && \. “$NVM_DIR/nvm.sh” # This loads nvm
[ -s “$NVM_DIR/bash_completion” ] && \. “$NVM_DIR/bash_completion” # This loads nvm bash_completion
~~~4.変更を反
tsxでError [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol ‘c:’
# 本記事について
tsxでTypeScriptを実行しようとして出たエラーがデバッグできず、ググっても対処法が出てこなかったので、同様の症状を経験する方のために記事に残そうと思いました。# 結論
表題のエラーが出たらNode.jsをアップデートすると直るケースがある。# 症状
“`package.json
{
“name”: “***”,
“type”: “module”,
“scripts”: {
“dev”: “tsx src/index.local.ts”
},
“devDependencies”: {
},
“dependencies”: {
}
}
“`
からの
“`
npm run dev
“`
で出たエラー
“`> dev
> tsx src/index.local.tsnode:internal/errors:496
ErrorCaptureStackTrace(err);
^Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs wit
フォローしているQiitaユーザが作成した記事を1日1回、スラックに通知してみた ~AWS100本ノック~ 13/100
# はじめに
Qiitaにはユーザのフォロー機能がありますが、フォローしている人が投稿した記事を確認するには、`フォロー中のユーザ`タブで記事を一覧表示して、当日の記事を確認するしか現状なさそうです 😥
まぁ、それでもいいっちゃいいんですが、せっかくなら日常で使っているコミュニケーションツールに通知してくれた方が良いなーと思い、自動で通知する機能を作ってみました!
![スクリーンショット 2024-11-05 153409.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/9acf3762-1985-2c11-1796-051d53f8075f.png)
# 試してみる
では、さっそく試してみます。
Qiita APIを利用して情報を取得し、Slackに通知します。
※公式のQiita APIリファレンスは[こちら](https://qiita.com/api/v2/docs)全体像としては以下になります。
![フォローしているQiitaユーザの投稿をスラックに通知.d
discord bot (discord.js)を GCP 無料VM で常時実行
ローカルPCのnode.jsをつけっぱなしにするはイヤだったので、もともと維持しているGCPの無料VMで実行させることにしました。
## 無料VM
https://cloud.google.com/free?hl=ja
に詳しく載っています。VMの構築方法の詳細は、ググると詳しく載っているのと、自分の過去記事にも少し触れていますので、省略しますが、要は、e2-microという小さなサーバをUS-WEST(オレゴン)で作ると無料って感じです。
あたりさわりのない「ubuntu」で作っています。
実は、ずっと18のままだったんですが、サポート切れたので、今日、20に上げました。## nodejs インストール
nodesoource経由でインストールしてみます。
“`
$ sudo su
# apt update
# apt upgrade
# curl -fsSL https://deb.nodesource.com/setup_23.x -o nodesource_setup.sh
# chmod 777 nodesource_setup.sh
# ./nodesour
discord bot 作成 (discord.js) 2024/11版
discordのボットを作ってみました。
記事の時期のよって、古い情報もあり動かないところもあったので、2024/11現在ってことで、実際に作ってみて、整理してみました。## 使ったもの
* 自分のパソコン(Mac)のnode.js
* discord.js## 必要な知識
* 多少のnode.js javascriptのスキル
* コピペ能力## 作るBOT
問題がネタが思いつかないことなのですが、天気を教えてくれるボットにしました。
https://qiita.com/youtoy/items/932bc48b03ced5a45c71
をコードをそのまんま使わせていただきました。
ありがとうございます。
ついでに、「天気」以外のメッセージには「👍️」マークをリアクションするようにしてみました。## discord bot 設定
https://discord.com/developers/applications
で、アプリ設定画面に行きます。
スクショがないです。
※操作中に、適宜「保存」してくださいね。
– – –
1. 右上の“[New Applica
Lambda(Node.js)のDockerイメージをデプロイしてみた。(その3,EC2上でDocker上のLambdaを実行してデバック)
# はじめに
LambdaをDockerイメージでデプロイする方法を、調査する機会があったので自分の備忘用にメモ書きを残します。今回は、Dockerを起動して動作確認をする所をメモ書きします。
実行環境は、前回からの続きです。# イメージをビルドする
“`shell
cd
cd DeployProject
docker build -t deployproject:test1 .
“`
-t オプションで、「名前:タグ」を指定しながらビルドします。前回、Dockerファイルに「COPYコマンド」など正常に動くか確認します。
# デバック用の端末用意
デプロイする前の動作確認は、Teratermの端末を3枚用意するとデバック作業が楽でした。Teratermは、「File」→「Duplicate session」で同じ接続端末を増やせるので3枚に増やして、下記の用な配置でデバックしてました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/d2af27f
Azure Web AppsでHonoを動かすメモ
Azure FunctionsでHonoを動かすテンプレは公式に書いてますがWeb Appsだと無いみたいでした。
https://hono.dev/docs/getting-started/azure-functions
あとWeb AppsじゃなくてStatic Web Appsにデプロイするネタはたまに見かけますが、PaaSサービスのWeb Appsにデプロイしたいなと思った次第です。
## Web Appsはコードデプロイで立てておく
コンテナ起動かコードデプロイかのどちらかがありますが、コードデプロイでNode.js 20LTSを選択します。
v22などは現状選択不可でした。
– リージョン: West US
– プラン: B1## 修正箇所コピペ用
まずはNode.jsのテンプレートでアプリ作成
https://hono.dev/docs/getting-started/nodejs
“`bash
$ npm create hono@latest my-app
“`Which template do you want to use?で `nod
Azure Web AppsのGitHub Actions Yamlファイルをアップデートする
自分の記事だけど結局コピペできる内容が貼ってなくてしんどい。
https://qiita.com/n0bisuke/items/d59fe7a7b9cf1ab219b8
似たような記事何回も書いてそうだけど見当たらないという。。。
## Azure連携デフォルト
– Node.js v20LTSです。古い。。。23使いいたいせめて22
これがデフォで連携すると入ってくるymlファイルです。
“`yml
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actionsname: Build and deploy Node.js app to Azure Web App – n0bisukeAPP
on:
push:
branches:
– main
workflow_dispatch:jobs:
b
JWTにおける認証のイメージを調べた
# 時系列でフロントとバックのやることは?
JWTは基本的にサーバー側で状態を持たないため、セッション管理がシンプルになり、負荷分散がしやすいメリットがあげられます。
ただし、セキュリティの観点からHTTPSで通信し、必要に応じてトークンのリフレッシュや失効管理を行うことが推奨されるらしいです。
## 1. ユーザーがログイン情報を入力する
フロントエンド: ユーザーがメールアドレスやパスワードなどの認証情報をログインフォームに入力し、サインインリクエストを送信します。## 2. 認証リクエストをバックエンドに送信する
フロントエンド: 入力された情報をバックエンドに送信します。通常、HTTPSを使ってセキュアにAPIリクエストを行います。バックエンド: リクエストを受け取り、送信された認証情報(メールアドレス、パスワードなど)を検証します。
## 3. ユーザー情報を認証する
バックエンド: データベースから該当するユーザー情報を検索し、パスワードなどを照合します。正しい情報であれば、JWTを生成します。## 4. JWTを生成して返す
バックエンド: ユーザーが
Prisma でモデル名を取得したい
## はじめに
Prisma Client で Model 名(文字列)を使いたい場面に遭遇した。
Prisma は `node_modules/.prisma/client/index.d.ts` に型定義が存在する## Model 名を取得する
以下に記載するような `schema.prisma` が定義されているとする。
“`prisma:schema.prisma
model User {
id String @id
name String
}
“``npx prisma generate` 等何でも良いので `node_modules/.prisma/client/index.d.ts` を生成する。
下記のように記述すれば ModelName を取得できる。“`ts
import { PrismaClient } from ‘@prisma/client’;const prisma = new PrismaClient();
prisma.user.name;
// -> User
“`全件欲しい場合は、以下のように記述す
Node.js+Playwrightのセットアップ:LTSとCurrentに気をつけよう
## 要約
テスト自動化の学習として、Node.jsとPlaywrightを使ったテスト環境を構築した際、安定性重視のLTSバージョンの重要性を実感した失敗談をお伝えします。—
## 初めに
この記事では、Playwrightのセットアップ方法とNode.jsのバージョンによるトラブルを経験した備忘録を紹介します。Playwrightを試してみたい方や、Node.jsのバージョン管理に興味のある方の参考になれば幸いです。
## 作業環境
| OS | Node.js | npm | nvm |
|:-:|:-:|:-:|:-:|
| Windows10 | v20.15.1 | v10.8.2 | v1.1.12 |:::note warn
OS, Node.js, npmは開発していたとき(2024年8月)のものです。nvm(nvm for windows)は後日実装しました。
:::## 環境構築
### 1. ディレクトリの作成
任意の場所に新しいフォルダを作成します。### 2. Node.jsのインストール
[公式サイト](https://n
Nest.jsのアーキテクチャーと基本3概念「モジュール」「コントローラ」「サービス」
# Nest.jsとは
***Node.jsでTypeScriptを使った高速でWebアプリを作れるバックエンドフレームワーク***です。最近だと***TypeScriptだけで開発できるNest.jsとReactを使った開発***なども増えてきました。***Expressをベースに作られて***います。# Nest.jsの特徴
– Expressの機能が使える
– テストフレームワークが用意されている
– OpenAPIなどが用意されている
– NestCLIを使ってテンプレートが作れる
– GraphQLと相性がいい最近だとBFE開発も見かけるようになってきました。Nest.jsとGraphQLだと相性が抜群です。
https://zenn.dev/overflow_offers/articles/20220418-what-is-bff-architecture
# 公式ドキュメント
https://nestjs.com/
# 補足
2024年11月時点# Nest.jsの導入
***Nest.jsを導入***します。
“`
npm i -g @nestj
#Javascript #プログラミング # #atcoder や #paiza の #競技プログラミング で気づいた #nodejs の不可解な挙動
**本内容を利用した場合の一切の責任を私は負いません。**
# 概要
作成中や提出前に、確認でローカル実行した時に気づいたこと。
consoleは非同期???
もしくは、node.jsは投機実行する???# バージョン
– OS
OS 名: Microsoft Windows 10 Home
OS バージョン: 10.0.19045 N/A ビルド 19045
システムの種類: x64-based PC
– Visuatl Studio Code(以降、VSC)
バージョン: 1.38.1
– node.js
node-v20.9.0-win-x64.zip# 詳細
下記のソースをVSC上で実行する。“`Javascript
var a = [];function sub() {
for (let index = 0; index < 10; index++) { a.push(new Array(10)); } //領域確保遅延かもしれないため、確
Honoとは何か(初心者向き)
# 動画
この動画のレビューです。# この記事を書いている段階
Expressはまだ実装していない。# Hono
Honoは***炎のHono***でRubyみたいに“`日本人が作ったフレームワーク“`みたいです。
“`Node.js環境で使用できる超軽量のWebフレームワーク“`で、
“`TypeScriptやJavaScriptでの開発に適してます“`。似たようなものだと
– Express
– Nest.jsなどです。
Expressより軽量みたいです。
# 導入
“`
npm create hono@latest
“`
アプリ名を決めて“`cloudflare-workersを選択“`します。導入後、開発ディレクトリに移動します。
“`
npm install
“`
で依存関係をインストールします。
その後wranglerをインストールします。
“`
npm install -g wrangler
“`
そしてwranglerを起動してサ
nvm installに失敗するときの対処法
## 事象
nvmを利用して、nodeをinstallしようとすると、エラーが出てインストールに失敗する。## 背景
プロジェクトの環境に合わせるため、nodeのバージョンを`v18.16.0`から`v16.17.1`にしたかった。## 発生手順
1. まずは自分の使用環境の確認。
`node -v`
-> v18.16.02. 使いたいnodeのバージョンをインストールする。
`nvm install 16.17.1`ここで、エラーが発生した。
“`
nvm install 16.17.1
Downloading and installing node v16.17.1…
Downloading https://nodejs.org/dist/v16.17.1/node-v16.17.1-darwin-arm64.tar.xz…
#######