Node.js関連のことを調べてみた2020年12月06日

Node.js関連のことを調べてみた2020年12月06日

npm-check-updates (ncu) v10 の引数まとめ

# はじめに
[npm-check-updates](https://github.com/raineorshine/npm-check-updates) は、package.json に書かれている依存性を、特定されているバージョンを無視して最新版へと書き換えます。通常は`ncu`と`ncu -u`でそれぞれ更新のチェックと書き換えを行ってくれるのですが、引数を付けて細かい設定をしたい場合があります。引数については日本語の記述が無かったり、古いバージョンに対する記述があったりするので、まとめました。

用いた ncu のバージョンは`10.2.2`です。

# 使い方
グローバルインストールする

“`shell
npm i -g npm-check-updates
“`

基本的な使い方

“`shell
ncu # 更新の確認するが、package.jsonの書き換えはしない
ncu -u # 更新を確認して、package.jsonを書き換える
npm i # 書き換えたpackage.jsonを元にインストールする

ncu -v # バージョンの表示
ncu -h #

元記事を表示

Authorization Code Flow with PKCE Clientの実装(Node.js)

# はじめに
[RFC7636 PKCE(Proof Key for Code Exchange by OAuth Public Clients)](https://tools.ietf.org/html/draft-ietf-oauth-v2-1-00)は認可コード横取り攻撃の対策(authorization code interception attack)として策定された仕様です。

また、PKCEは認可コード横取り攻撃にかかわらず、OAuth2.0におけるCSRFの対策としても機能します。
なお、stateによるCSRF対策ではクライアントが検証を実施するのに対して、PKCEによるCSRF対策では認可サーバーが検証を実施します。(PKCEを利用した場合でも、クライアントが固定値などの脆弱なcode_challenge、code_verifierを利用するとCSRFに対して脆弱になるためClientに対策の責務がないわけではありません)

PKCEはスマートフォンアプリなどのPublic Clientにおいて利用が強く推奨されている仕様でしたが、現在策定中の[The OAuth

元記事を表示

firebase functionsのonCall呼出し時に認証する

思い付きで書くのでアドベントカレンダーに参加できなかった。。。
# この記事の対象者
onCallファンクションの中で認証が必要なDB操作等をしたい人向け。

ググっても出なかったので書き出します。

onCallの中では認証情報が渡されているのでuidを取り出してcustomTokenを作り認証すればOK!!

##以下サンプルソース

### web 側
バッチ実行ボタン等から呼ばれるclickHandler関数の中でfunctions.httpsCallableにfunctions側の関数名(ここでは’hoge’)を渡して非同期で実行する

“`client.js
import firebase from ‘firebase/app’
import ‘firebase/auth’
import ‘firebase/functions’
import firebaseConfig from ‘./firebaseConfig’

const clickHandler = async () => {
const hoge = functions.httpsCallable(‘h

元記事を表示

Google Chrome の JavaScript エンジン V8 って?

# はじめに
V8 エンジンは、Google のオープンソースで Javascript, WebAssembly のエンジンです。
V8 は、 C++ で書かれており、Google Chrome や Node.js で動いています。

# Javascript はどうやって動いているの?
V8 エンジンは、2つのコンポーネントで構成されています。

1. Meomry Heap(メモリの割り当てなど)
2. Call Stack(コードを実行するためのスタック)

Javascript から使える API (`setTimeout` など)には様々なものがありますが、これらは V8 エンジンから提供しているものではなく、ブラウザによって、提供されているものです。

## Call Stack
Javascript は、シングルスレッドで動くので、Call Stack もシリアルに動きます。

例えば、このようなコードがあるとします。

“`javascript
function multiply(x, y) {
return x * y;
}
function printSq

元記事を表示

Yarnについてまとめ

#Yarnとは?

– 2016年にFacebook社からリリースされたパッケージ管理ツール

– Node.jsのデフォルト搭載のnpmの代替となるツール

なぜあえてnpmでは無くYarnが使われるのでしょうか?

# Yarnのメリット

– 並列処理によりインストールが高速

– yarn.lockファイルによる厳密なモジュールのバージョン管理
– (yarnリリース当初、npmにはpackge-lock.jsonファイルが無かった)

– npmとの互換性
– npmと同じpackage.jsonが使える

#npmとyarnの主なコマンドの違い

##package.jsonの作成

“`:npm
npm init
“`

“`:yarn
yarn init
“`

##依存パッケージのインストール

“`:npm
npm i
“`

“`:yarn
yarn
“`

##新規パッケージのインストール

“`:npm
npm i <パッケージ名>
“`

“`:yarn
yarn add <パッケージ名>
“`

##パッケージのグ

元記事を表示

IBM Watson Discovery 便利プログラム

# コレクション内のすべての文書を削除する
collectionに文書を入れていろいろ試したあと、いったんすべての文書を消してまた何かしたい…。
かといってcollectionを再作成すると、collectionIDとかconfigIDとかが変わってしまうのは困る!
ということがあったのでcollection内のすべての文書を削除するプログラムをTypeScriptで作成してみました。

ソースは[git](https://github.com/Ryota-Amano/ibmcloud-discovery)にあります。
Qiitaの記事ではプログラムの仕様や概要を説明します。利用方法はgitをご覧ください。
**ご利用は自己責任でお願いいたします。**
改善点や不明点等ございましたら連絡いただけますと嬉しいです。 
## 仕様
* 資格情報の入力はプログラム実行後に画面から入力
* 入力する資格情報は
* url
* APIkey
* environmentID
* collectionID
* Discovery APIバージョンは固定値(`201

元記事を表示

Cannot find module ‘express’の解決法

nodeをインストールしてプログラムを実行しようとした所、エラーが出た。

## エラー文
“`
internal/modules/cjs/loader.js:834
throw err;
^

Error: Cannot find module ‘express’
“`
## プログラム

“`Javascript:app.js
const express = require(‘express’)
const app = express()
const port = 3000

app.get(‘/’, (req, res) => {
res.send(‘Hello World!’)
})

app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
“`

https://expressjs.com/ja/starter/hello-world.html

## 対処方法
expressをinstallし、パスを通す。
oh、簡単。。

元記事を表示

Node.js & TypeScriptのプロジェクトの開始

こちらに全部書いてあります。
Node.js & TypeScriptのプロジェクト作成
https://typescript-jp.gitbook.io/deep-dive/nodejs

“`
・package.json作成
npm init -y

・TypeScript・node.jsの型ファイルインストール
npm i –save-dev typescript @types/node

・tsconfig.json作成
npx tsc –init

・tsのバージョン確認
npx tsc –version

・ts-node,nodemonをインストール
npm i –save-dev ts-node nodemon

・scriptsにコマンドを記載
“scripts”: {
“start”: “npm run build:live”,
“build”: “tsc -p .”,
“build:live”: “nodemon –watch ‘src/**/*.ts’ –exec ‘ts-node’ src/index.ts”
}

元記事を表示

Progate Node.js学習

Node.jsとは

**Node.js**とは、Javascriptをサーバーサイドで動かすための言語です。ProgateのNode.js学習コースでは、買い物サービスをつくる過程でNode.jsの使い方を学んでいきます。そして、Node.jsには便利な機能を簡単に使うためにまとめられている**パッケージ**というものがあり、今回は**Express**というパッケージを使います。

Node.jsの基本的な使い方

Expressの導入,サーバーの起動

まず、インターネットから自分のアプリケーションにパッケージをインストールします。そして、Expressを使うには、パッケージの読み込みと、実際に使用するための準備をする必要があります。

“`app.js
const express = require(“express”);
const app = express();
“`
サーバーを起動させるには、`listen`を用いてapp.jsファイルを実行します。

“`app.js
app.listen(3000);
“`

元記事を表示

npmについてまとめ

#npmとは

**Node Package Manager**の略

Node.jsの**パッケージ管理システム**である。

2010年に**Isaac Z. Schlueter**氏によって開発された。

#パッケージ管理システムとは

> パッケージ管理システム(パッケージかんりシステム)は、オペレーティングシステム (OS) というひとつの環境で、各種のソフトウェアの導入と削除、そしてソフトウェア同士やライブラリとの依存関係を管理するシステムである。

要は世界の凄い人たちが作って公開しているモジュールをパッケージとして管理し、検索、閲覧、及びダウンロードして使えるよ〜というシステムです。

また、使用したいパッケージの依存パッケージ、そのバージョンまで自動で管理してくれます。

#npmを使わないとどうなる?

例えば**[express](https://www.npmjs.com/package/express)**というパッケージを使用したいとします。
**express**は30ものパッケージと依存関係にあります。
![スクリーンショット 2020-12-04 21

元記事を表示

PHPでの文字列送信方法

21803
項目表示の為には以下の項目を書く。
こんにちは。今回はPHPでのデータ送受信方法が分からないという人の為に説明します。

php>
ここのPOSTというのはデータ送信を示しています。もう一つGETという物が有りますが、このGETという物はURLのところの最後のところは相手側から送られてきたデータの事ですので、その内容が見えてしまいます。なので、データ送受信の際にはPOSTを使う事をお勧めします。
次にこのaction属性を使う事で送信先を指定することが出来ます。この場合ですとtestform.phpにデータを送信します。次にこのtypeについて説明します。このtypeで”text”と指定する事により、テキストボックスでデータを送信することが出来ます。
次に

元記事を表示

? Microsoft Teams 開発の初心者向けガイド その3: メッセージ・エクステンション

みなさんこんにちは〜。この記事は、Microsoft Teams 開発の初心者向けガイド第3弾になります。前回の2つのチュートリアル ( [タブの開発](https://dev.to/azure/beginners-guide-to-ms-teams-development-1-tabs-4e9k/?WT.mc_id=m365-9174-timura) と [Bot 開発](https://dev.to/azure/beginners-guide-to-ms-teams-development-2-bots-590m/?WT.mc_id=m365-9174-timura))も楽しんでもらえていたらうれしいです。

今回は、Teams UI からのユーザからのアクションで検索結果やメッセージを書き出す方法について説明します。
![3-ext1-cover-1000×420.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/c97928d9-2a4d-2d7f-cc2c-19af73a54b81

元記事を表示

nodeプロジェクトで新規 dependency 追加時に、自動で脆弱性チェックを行う

# 概要
npm (yarn) によるパッケージ管理は非常に楽ですが、ときには脆弱性を含むパッケージを入れてしまうこともあるかもしれません。
CI/CD パイプラインで 脆弱性チェックを行うのも良いかもしれませんが、ローカルで依存パッケージを追加・コミットする前に脆弱性チェックを行い、無駄なコミットが含まれないようにするほうがスマートだと私は思っています。

そこで、 `lint-staged`と`husky`を使って、依存関係を追加した場合のcommitで脆弱性チェック(`audit`)をする設定をします。

# 関連パッケージ等
– yarn (npmでも脆弱性チェックはできますが、ここではyarnを使います)
– lint-staged
– husky

# やったこと(結論)
`husky`と`lint-staged`をdevDependenciesに入れて、`package.json` に以下を追加しましょう。

“`package.json
{
“scripts”: {
“audit:moderate”: “yarn audit –level moderat

元記事を表示

nodeアプリケーションを実行可能ファイルにして出力する

## 結論
こちらを使っていきます
https://github.com/nexe/nexe

Nexe is a command-line utility that compiles your Node.js application into a single executable file.
(NexeはNode.jsアプリケーションを実行可能ファイルにコンパイルするためのコマンドラインツールです。)

## プログラム
せっかくなのでそれっぽくするために、Qiitaの情報をスクレイピングしてくるプログラムを作成します
*chromedriverが入っている必要あり

“` qiita.js
const {Builder, By, Capabilities, Key, until} = require(‘selenium-webdriver’);
const capabilities = Capabilities.chrome()

capabilities.set(‘chromeOptions’, {
args: [
// ‘–headless’,
‘–

元記事を表示

Node.jsについて調べたことまとめ

#Node.jsとは

**サーバーサイドのJavascript実行環境である。**

PHP、Ruby、Python、Java等の言語と同様に、サーバー側で動作するJavaScript。

Google Chromeに搭載されたJSエンジンV8をサーバーで実行できるようにしたというイメージ。

V8の処理は、他のPHP/Perl/Ruby/Pythonなどのスクリプト言語の処理エンジンよりも速い。

# Node.jsでできること

– サーバーサイドアプリケーション
– Webアプリ
– Node.js + Express

– クライアントサイドアプリケーション
– Visual Studio Code
– GitHub Decktop
– Slack

などが利用例である。
Node.js + Electron

– IoT
– Node.js + Raspberry Pi

# Node.jsの特徴
– シングルスレッド

– ノンブロッキングI/O(非同期処理)
– イベントループ

###シングルスレッド
プロ

元記事を表示

Expressで簡易APIサーバー作成_1 Sequelizeでマイグレーションしてみる

## 概要
オリジナルアプリのフロントをReactで作成していて、APIサーバーをExpressで作成してみることにしました。バックでのJavaScriptの使われ方を知りたいと思っていたことがきっかけです。

公式によるとExpressとは、次の通りです。
>Express は、Web アプリケーションとモバイル・アプリケーション向けの一連の堅固な機能を提供する最小限で柔軟な Node.js Web アプリケーション・フレームワークです。

ExpressでもRailsのActiveRecordのようにORMでDBを扱いたいと思っていたところ、Sequelizeというパッケージがあるようです。
使い方を調べてみました。

## 目的
ExpressのスケルトンからSequelizeを使ってCRUDの雛形をささっと作れるようなるために、手順をアウトプットすることが目的です。
今後、何回かに分けてアウトプットしていこうと思います。

今回の目標は次の通りです。

* Expressアプリーケーションのスケルトンを作成する。
* ユーザーを表すシンプルなモデルを作成する。
* マイグレーシ

元記事を表示

GoogleのサービスをPuppeteerで自動操作する方法 – ログイン編

http://makiuchi-d.github.io/2020/12/03/autologin-to-google.ja.html

元記事を表示

AWS CDK で Docker イメージを Lambda にデプロイする

AWS Lambda でコンテナイメージがサポートされました?
https://aws.amazon.com/jp/blogs/aws/new-for-aws-lambda-container-image-support/

また、AWS CDK 1.76.0 で早速サポートされたのでデプロイしてみました。
https://github.com/aws/aws-cdk/releases/tag/v1.76.0

# CDK プロジェクト作成

まずは CDK プロジェクトを作成します。今回は TypeScript で書きます。

“`zsh
mkdir cdk-lambda-container
cd cdk-lambda-container
cdk init –language=typescript
“`

# Lambda Function 作成

作成されたファイルの中にある Stack を編集します。

DockerImageFunction のドキュメントは以下の URL です。
https://docs.aws.amazon.com/cdk/api/latest/do

元記事を表示

【箇条書きで解説】Dockerに入門しよう!!

現在作成しているアプリケーションの開発環境にDockerを導入したものの、いまいち理解が進んでないと感じたので、備忘録も兼ねてこの記事を書きます。

また、具体的な使い方の部分は箇条書きではなく普通に書いています。

## Dockerとは?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509690/cd089001-d7dc-7505-83a1-3d443f982546.png)

– [Docker inc](https://www.docker.com/company)によって開発されている
– `コンテナ型仮想環境`を開発・配置・実行するためのオープンソースプラットフォーム
– 異なるPCやサーバーであっても、簡単に同じ仮想環境を作成できる
– Go言語で書かれている

### ワンポイント解説
元々は`ホスト型仮想化(VMWare、Virtual Boxなど)`が主流だったそうですが、現在は`コンテナ型仮想化`が主流です。

![image.png](https://qi

元記事を表示

Node.jsアプリのOpenID Connect認証連携

# はじめに
自作のNode.jsアプリをOpenID Connectプロバイダーと連携させて認証機能を実装するためのNode.jsアプリの作り方について説明します。全体の流れは以下の通りです。

1. 前提の確認
2. OpenID Connectプロバイダーへのアプリの登録
3. Node.jsアプリのコーディング

# 前提
この記事での環境の前提は以下の通りです。ただし、なるべく環境依存せず汎用的になるよう記事を書いています。コードの要所部分のみを説明しています。

– Node.js
– この記事では、npmモジュールのpassport-ci-oidcを利用します。
– npmモジュールのexpressやpassportも利用しますが、前提知識の説明を省略いたします。
– OpenID Connectプロバイダー
– OpenID Connectとは何かなど前提知識の説明を省略いたします。
– どのプロバイダーでもアプリの作り方の大まかな流れは変わりませんが、プロバイダーが利用方法を細かくガイドしている場合があります。特にどのnpmモジュールを

元記事を表示

OTHERカテゴリの最新記事