- 1. npmとコマンドについて
- 2. 今後NeDBを使うのはやめよう
- 3. nodejs mysql 複数クエリ (multiple query) を使う方法
- 4. 【Deno】Deno1.28「npm完全に理解した」
- 5. twitter api v1からv2へ(その2)
- 6. ポーリング処理でもawaitが使いたい
- 7. node で AWS Lambda Layers 使ってる奴は今すぐ作り直せ
- 8. Reactのコンテナを作成してみよう!
- 9. 住所を入力するとCesiumでピンを立てるアプリ
- 10. @shopify/shopify-api: Cannot read property ‘initialize’ of undefinedの解決方法
- 11. nodeのバージョンを簡単に切り替えることができるツール「n」のよく使うコマンドまとめ
- 12. ターミナル起動時に「N/A: version “N/A -> N/A” is not yet installed.」のエラー
- 13. twitter api v1からv2へ
- 14. Astro の打ち上げ ??
- 15. Visual Studio Code のデバッグコンソールで「利用可能なデバッガーがありません。’variables’ を送信できません」の対処
- 16. AlmaLinux OS 8にNode.js 18をインストール(AppStream)
- 17. GraphQL(TypeGraphQL) における認可の実装例
- 18. JSのツール管理ライブラリVoltaとは
- 19. 「Node.jsの使用開始」チュートリアルで S3 の体験
- 20. Embedded Node-REDのカスタムノードについて
npmとコマンドについて
# npmとは
Node Packaged Managerの略字。
node.jsで作られたpakageを管理するツールのこと。
開発者はnpmを利用してnode.jsで作られたpackageをインストールすることができる。# npm の利用方法
### npmのインストール
[node.js](https://nodejs.org/ja/)サイトにて簡単にインストールすることができる。### packageのインストール
以下のコマンドでweb上のpackageをインストールすることができる。
“`shell
npm install webpack
“`### package.jsonの生成
以下のコマンドをターミナルで入力するとpackage.jsonを生成することができる。
正確には、npmを使うための初期設定をするコマンド。
“`shell
npm init
“`
コマンドを入力すると、いろいろ聞かれるが、そのまま`enter`を押して進むと作成が完了する。package.jsonについては、以下の記事をご参考に…
[npm i とnpm ci の違
今後NeDBを使うのはやめよう
既にメンテナンスされていません。セキュリティ対応もされません。
https://github.com/louischatriot/nedb
> ⚠️ ⚠️ ⚠️ WARNING: this library is no longer maintained, and may have bugs and security issues. Feel free to fork but no pull request or security alert will be answered.
非バイナリ依存でデータはファイル保存、そしてファイルはテキスト形式なので容易に閲覧することができる、と、SQLiteではかゆいところに手が届かなかったのがNeDBなら届く。素晴らしいNoSQLデータベースであっただけに、非常に残念です。
教材向けで使いやすいNoSQLデータベース無いですかね。
nodejs mysql 複数クエリ (multiple query) を使う方法
# Code
`nodejs` + `mysql` で複数クエリを使用しようとしたところ、エラーが発生して解決するのに時間がかかった。
方法は単純で`multipleStatements: true`をちゃんと設定として加えておくこと。“`javascript:server.js
const mysql = require(‘mysql’);
const con = mysql.createConnection({
host: ‘localhost’,
user: ‘root’,
password: ‘password’,
database: ‘database_name’,
multipleStatements: true
});“`
“`javascript:server.js
app.get(‘/users/:id’, (req, res) => {
var user_id = parseInt(req.params.id)const sql_1 = `select * from users wher
【Deno】Deno1.28「npm完全に理解した」
Denoは先日v1.25で2022/08/25に[npm対応したぞー](https://qiita.com/rana_kualu/items/7eb1acff8f66948b04eb)と発表したのですが、[そのバージョン](https://deno.com/blog/v1.25)では`Experimental npm support`、あくまで実験的サポートであり、まだ実戦投入できる段階ではありませんでした。
そんなわけで実際に使えるのはまだまだ先だねえと思っていたのですが、2022/11/14に公開されたv1.28で早くも`Experimental`が取れました。
はえーよ。ということで以下は[該当のリリースノート](https://deno.com/blog/v1.28)の紹介です。
# [Deno 1.28: Featuring 1.3 Million New Modules](https://deno.com/blog/v1.28)
[Deno 1.28](https://github.com/denoland/deno/releases/tag/v1.28.0)を公
twitter api v1からv2へ(その2)
# はじめに
[twitter api v1からv2へ](https://qiita.com/hawaii_hahaha/items/479639dd5e656ecba5e7)を書いたが、oauth pkceについてはまだだったのでそのご報告# 手順
1)twitter developerでの登録
“`
App permissions=Read and write and Direct message
Type of App=Web App, Automated App or Bot
App info
Callback URI / Redirect URL=http://127.0.0.1:3000/callback
Website URL=https://twitter.com/
以下は入力していない
“`
そして、そのあと、Keys and tokensのタブにいって、最後のOAuth 2.0 Client ID and Client Secretの部分で、Client IDとClient Secretをメモする・
ポーリング処理でもawaitが使いたい
async/await、便利ですよね。
Javascript(Typescript)を利用していたら当然のようにお世話になっていることと思います。今回はポーリング処理の終了をawaitで待ちたいというお話です。
何個か実装方法を思いついたのですが、どうにも悩んだ割に汎用性がなさそうな気がしてるので、記事にすることで供養したいと思います。## やりたいこと
状況を整理して、やりたいことを明確にします。
処理の流れは下図の通りです。
今回は4,6の部分をPromiseに置き換え、awaitすることで4,6,7の処理が手続き的に書けるようにしたいと思います。
満たすべき要件は
1. ポーリング完了条件を満たしたらresolveするPromiseを返却すること(サーバー側での処理失敗の場合については、完了パターンができれば容易に実装できるので割愛)
1. ポーリング終了時やページ遷移時など、必要なタイミングで外側からポーリングをキャンセルできること(裏で無限にsetIntervalが動き続けないようにする)“`mermaid
sequenceDiagram
クライアン
node で AWS Lambda Layers 使ってる奴は今すぐ作り直せ
# TL; DR
– AWS Lambda Layers の内側で AWS SDK を require してると死ぬので Lambda Layer を使ってはいけない。
# AWS Lambda で nodejs 18 のサポートが始まりました
これによって `Runtime.NODEJS_16_X` から `Runtime.NODEJS_18_X` にできるのですが `Runtime.NODEJS_18_X` からは `AWS SDK for JavaScript v2` が実行環境上に存在しなくなり `AWS SDK for JavaScript v3` のみが実行環境上に存在します。
そのため Lambda Layer で `AWS SDK for JavaScript v2` を require する手段がなくなるので死にます。
これなら大人しく `AWS Lambda` ごとに esbuild などでくっつけていた方がまだマシでした。
少なくとも nodejs で Lambda Layer を利用する必要は全くなく、下手に利用すると AWS 側の都合で悲惨なことに
Reactのコンテナを作成してみよう!
## 前提
– Dockerコマンドについてある程度理解している## はじめに
– Dockerfile
– docker-compose.ymlを作成します
## 必要なファイルの作成
### Dockerfile
今回はNodeJSの14.17.1のDocker imageから作成します
今回はワークディレクトリをcodeにします
“`Dockerfile:Dockerfile
FROM node:14.17.1-alpine
WORKDIR /code
“`### docker-compose.yml
“`docker-compose.yml
version: ‘3.8’
services:
# サービス名はfront
front:
# コンテナ名はフロント
container_name: front
# ビルドコンテキストはカレントディレクトリ
build:
context: .
dockerfile: Dockerfile
# カレントディレクトリ内の全てのファイル・フォルダをcode
住所を入力するとCesiumでピンを立てるアプリ
# はじめに
ブラウザで住所を入力するとCesiumの地球儀にピンを立てるアプリを作った。住所を入力するとCesiumの地球儀にピンを立てるアプリを作りました。 pic.twitter.com/mMAGHcChpW
— ダンブル扉 (@danburutobira) November 20, 2022
>Cesium とは?
そもそもCesiumとは何かという問いに誤解を恐れずに答えるなら、Web
@shopify/shopify-api: Cannot read property ‘initialize’ of undefinedの解決方法
# はじめに
Shopifyの[公式ライブラリ](https://github.com/Shopify/shopify-api-node)を使いOAuth認証・認可→アクセストークン取得をしようとしたとき、***公式ドキュメント***通りでは動かなかったので、その対処法を残しておきます。# 環境
– **実行環境**
– OS:Windows 11 Home 21H2
– 言語
– Node.js
– version: 16.11.1
– npm
– version: 8.0.0
– 使用しているライブラリ・フレームワーク
– Express
– version: 4.18.1
– @shopify/shopify-api (shopify-api-node Shopify公式のライブラリ)
– version: ^5.0.1# 解決法だけ知りたい方
“`js:index.js
//
nodeのバージョンを簡単に切り替えることができるツール「n」のよく使うコマンドまとめ
## 概要
「n」というnodeのバージョン管理ツールが便利だったのでよく使うコマンドをまとめてみた。
https://github.com/tj/n
## nのインストール
### npmでインストールする
“`shell
npm i -g n
“`下記をターミナルで実行し、バージョンが出力されれば成功
“`shell
n –version
# => v9.0.1
“`### Homebrewでインストールする
“`shell
brew i n
“`## インストール可能なnodeのバージョンを確認する
### 最新安定版(LTS)を確認
“`shell
n –lts
“`or
“`shell
n –stable
“`### 最新版を確認
“`shell
n –latest
“`### 最新の20件を確認
“`shell
n ls-remote
“`### 全て確認
“`shell
n ls-remote –all
“`## nodeのインストール
### 特定のバージョンを指定してインスト
ターミナル起動時に「N/A: version “N/A -> N/A” is not yet installed.」のエラー
### 概要
zshターミナル起動時に、下記文言のエラーが出たときの対処方法
(デフォルトのnodeバージョンの指定し直し)
(私の場合は、前触れなく急にエラーが発生。。。?)### エラー
“`:ターミナル起動時
N/A: version “N/A -> N/A” is not yet installed.You need to run “nvm install N/A” to install it before using it.
“`
この状態だと`node`コマンドが使えない。。。(`command not found: node`)
(指示通り`nvm install N/A`コマンドを実行しても解消せず)### 対処方法
下記コマンドをターミナルで実行するのみ
“`shell:ターミナル
nvm alias default デフォルトで利用したいnodeバージョン
# 例) nvm alias default v16.18.1
“`
※利用するバージョンは`nvm ls`コマンドで確認### 対処前後
twitter api v1からv2へ
# はじめに
いやー、大変だった。
今まで、twitter api v1.1で[ang12-twitter](https://github.com/hideume/ang12-twitter)というのを作成していたのだが、これをtwitter api v2に移植しようかといろいろやって、今日、まあまあ筋道が見えたというご報告# twitter api v2とは
twitter developerにいけば、説明がある。v1だと、検索結果が10個ぐらいしかとれなくなってしまったので、しかたがないので移植を行っているということ。
v1に比べて、restを利用できる回数が多いということだ。# Oauth2.0 with PKCE
v2でめんどくさいのが、認証で、全ての機能を使いこなすには、Oauth2.0 PKCEをクリアするアプリを作らないといけない。ただ、まだ、この認証部分は作っていない。認証の中でもbearer_tokenを使えば、一部のRESTは使用することができる。(app onlyともいう)
これが、わかるまでかなりかかった。
このbearer_tokenはtwit
Astro の打ち上げ ??
## 手順
### 1. `docker-compose.yml` を作成
“`yml:docker-compose.yml
services:
node:
image: node:lts-alpine
volumes:
– ./project/:/project/
working_dir: /project/
ports:
– “3000:3000”
tty: true
# command: ‘npm run dev — –host 0.0.0.0’“`
### 2. コンテナの起動 ?
“`sh
docker compose up
“`### 3. Astro のインストール
“`sh
docker compose exec node npm create astro@latest .
“`実行後、↓ 質問があるので、
“`
Need to install the following packages:
create-astro@1.2.3
Ok to proc
Visual Studio Code のデバッグコンソールで「利用可能なデバッガーがありません。’variables’ を送信できません」の対処
# 背景
Node.js を学び始め、Visual Studio Code でデバッグをし始めたところ、下のようなエラーが出た> 利用可能なデバッガーがありません。’variables’ を送信できません
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/159306f9-2b97-2647-cb0f-cc793c510312.png)なんだこれ?となったので、その解決法を記録
# 理由
単に、built-in Node.js Debugger が停止してしまっているので、Object として Console.log(Object) とした場合の ‘variables’ が表示出来ない。ってことだった。Debug 中にコード上で、Object を Hover Over させるのと同様ってことですね。
# 回避策
console.log(Object) をした後 ~ 終了 までの間のどこかに Brake Point を設定しておくことで、
デバッグコンソールにオブ
AlmaLinux OS 8にNode.js 18をインストール(AppStream)
# はじめに
Application Stream(AppStream)を利用してAlmaLinux OS 8にNode.js 18をインストール
## サポート
本手法で導入した場合、[Red Hat Enterprise Linux Application Streams Life Cycle \- Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhel-app-streams-life-cycle)より、2025-04がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。## LOG
### インストール
“`shell-session
# cat /etc/redhat-release
AlmaLinux release 8.7 (Stone Smilodon)# yum module install -y nodejs:18
… 略
“`### 各種確認
“`shell-session
# which
GraphQL(TypeGraphQL) における認可の実装例
# 概要
[Apollo Server](https://www.apollographql.com/docs/apollo-server/v3) と [TypeGraphQL](https://typegraphql.com) を使用して GraphQL API サーバを構築しました.
その中で, 下記の通り認可の実装をする必要がありました.– Administrator は全てのリソースに対してアクセスできること
– Owner は自己所有のリソースに対してのみアクセスできること
– 自己所有でないリソースにアクセスできないことサンプルコードを通して, TypeGraphQL における認可の実装例を紹介します.
# サンプルコード
## 全体像
“`bash
.
├── src
│ ├── authorizations
│ │ ├── authChecker.ts
│ │ ├── Role.ts
│ │ └── RolePolicy.ts
│ ├── schemas
│ │ ├── models
│ │ │
JSのツール管理ライブラリVoltaとは
# Voltaとは
[公式](https://volta.sh/)は手間のかからないJavaScriptのツール管理システムと謳っています(The Hassle-Free JavaScript Tool Manager)。
主なユースケースとしてはNode、npmのバージョン管理です。Voltaには三つの宣伝文句があります。
⚡高速
あらゆるJSツールを素早くシームレスにインストールし、実行することができます。VoltaはRustでビルドされ、軽快な静的バイナリとして出荷されます。⚡信頼できる
プロジェクトに参加する全員が同じツールを使えるようにし、ワークフローに支障をきたさないようにします。⚡ユニバーサル
パッケージマネージャ、Nodeランタイム、OSに関係なく、volta installという1つのコマンドで済みます。他より早くて、コマンド一つでプロジェクト内で共有できて、OSに依存ないようなツールということです。
# Voltaのセットアップ
Voltaのセットアップは簡単にできます。[Getting Started](https://docs.volta.s
「Node.jsの使用開始」チュートリアルで S3 の体験
# 背景
業務でAWS に関わることになったので、必要そうな技術を試行中そもそも、Node.js から理解していなかったので、まずはそれを理解しつつ、以下をやってみることに
https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v3/developer-guide/getting-started-nodejs.html
# 色々やってなんとなく把握したこと
– NVM: Npm の Version 管理。Node.js 使うなら入れたほうがよさげ
– [windows 版はここで](https://github.com/coreybutler/nvm-windows)
– npm: Node.js の Package 管理。
– [package.json](https://docs.npmjs.com/cli/v6/configuring-npm/package-json): これを元に bulid してくれる感じ?
– dependencies: 本番用
– devDependencies: 開発用
Embedded Node-REDのカスタムノードについて
## 要約
Embedde Node-REDのユーザディレクトリは絶対パスで指定しましょう。## Headless Node-REDが欲しい
Node-REDの実行時にはエディタ等のWeb UIは不要なのでいわゆるHeadlessなモードが欲しかった。軽く調べたところ、[httpAdminRootにnullを設定する](https://discourse.nodered.org/t/headless-node-red-instance/29053)というのが見つかったが、Webサーバ自体は起動してしまうようなので求めているものとは違った。## Embedded Node-RED
[Node-REDのソース](https://github.com/node-red/node-red/blob/master/packages/node_modules/node-red/lib/red.js#L54)を眺めていると、initの第1引数にnullを指定してWebサーバを渡さないことを想定しているような書き方だった。なので以下のガイドを参考にHeadlessなEmbedded Node