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

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

node-fetch use on unzipper

# Unzipperでrequestを使うかnode-fetchを使うかという問題

## 経緯
unzipperのopenメソッドを使う場合にrequestを要求される課題がある。
requestに限っているわけではないものの、node-fetchを入れることはできない。
node-fetchを入れても稼働するPRを送って今後改良を追っていくほど余裕はないので
既存のunzipper提供機能の範疇でなんとか使う方法を考えた

## 課題

次の3つの課題があった。
ECONNRESETがそこそこ頻発する
requestがdeprecatedになって2年が経過している。
制作物の都合上、requestを用いる限りネストが解消されない部分がある

# やりたいこと

### zipをダウンロードして展開する
deprecateになってしまっているrequestを利用せず、documentにnode-fetchを用いる方法が記載されていないが、bufferを用いる方法は記載されていたため、
bufferを用いたnode-fetchでの代用を試みた。

requestを用いる

元記事を表示

【初学者おすすめ!】Docker / Nuxt.js / Expressを使ってタスク管理アプリを作ろう!

## はじめに
今回はDockerとNuxt.jsとExpressを使ってタスク管理アプリを作成していきます。
こんな感じのアプリケーションになります。

![スクリーンショット 2021-08-22 20.47.11 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/838372/473bc5bd-f160-fba0-1bf2-169fea2b8301.png)

### 対象読者
・ Dockerを使ったことがない方
・ Nuxt.jsとExpressで何か作ってみたい方
・ Node.jsのORMライブラリである`Sequelize`を使ってみたい方

## 完成コード

https://github.com/ssk9597/Nuxt.js-Express-Task

## それでは一緒に作っていきましょう!
### Githubからクローン
Dockerから解説となると長くなるので省略します。

https://github.com/ssk9597/Docker-Nuxtjs-Expres

元記事を表示

最短2週間で著名OSSのメンテナになる方法

意味がよくわからないタイトルですね。私もよく分かりません。

ある意味ではこの記事の続きです:[貢献チャンスの探し方](https://qiita.com/umireon/items/cbf27deea6ff96d79c1d)

## TL;DR

## pnpm

元記事を表示

WEBアプリのビルド情報・変更履歴を手っ取り早く確認したい(git+node.js+angular)

はじめに

WEBサイトの開発で、修正が実行環境に取り込まれているか不安になることが多いので、確認するためのAPIを作ってみました。
git+angular+node.js の構成を前提としています。

node.jsサーバからgit logコマンドを打って、結果を返すようにしています。

gitコマンド

node.js の Child process を使用して git log を取得します。
[Child process](https://nodejs.org/api/child_process.html)

gitコマンドは、今回は以下のオプションで実行しています。
`git log –no-merges –pretty=format:”[%ad] %h %an : %s” –date=format:”%Y/%m/%d %H:%M:%S”`

–no-merges
 マージしたときのコミットを除いて表示する

–pretty=format:”[%ad] %h %an : %s”:
 表示する情報を指定できる。

 %ad:作成日
 %h:省略されたコミット

元記事を表示

ES6メソッドの復習 map(), filter(), findIndex(), test()

# ES6の配列メソッド
* 使わなくても別の構文で書ける
* シンプルに書ける
* 実行速度が早いわけではない

## map()
* 配列をイテレートする
* 要素1つずつ処理する
* 新しい配列を生成する

“`javascript
const array = [1, 2, 4, 8];
const resultArray = array.map(x => x * 2)
console.log(resultArray)
// output: Array [2, 4, 8, 16]

const object = {
“hoge”: {text: “fuga”},
“foo”: {text: “bar” },
“fiz”: {text: “buzz”}
};

const objectToArray = Object.keys(object).map(key => {
const value = object[key]
value[‘id’] = key
return value
});

console.log(object

元記事を表示

[環境構築]Node.js+TypeScript

## 背景
毎度毎度、セットアップの度に調べているので、自分用のメモです。

私自身はReact Nativeの開発が主ですが、簡単にjsやtsの動作確認したいときに、Playground的に利用します。

## 前提
* Mac
homebrewを使う場所があるのと動作確認をMacでやっただけで、Windowsでもほぼ変わらないと思います。
* Node.jsがセットアップされている
* yarnがインストールされている
もちろん、npmでも代用可
* gitがインストールされていること
Macだとデフォルトでインストールされてます(Apple Git-xxxという謎バージョン)

## プロジェクトセットアップ

“`
// フォルダ作成
mkdir node-and-ts
// カレントの移動
cd node-and-ts
// パッケージの初期化(package.jsonが作成される)
yarn init -y
“`

## gitセットアップ
git自体の説明はここでは省略します。
初期化と除外ファイルの設定を行います。

### 初期化
“`

元記事を表示

JavaScriptで役立つasync/awaitテンプレ(WebDevTips#2)

こんにちは,ココア(@cocoa_folio)です.
これまでは主にpythonに触れてきましたが,最近Javascriptを勉強し始めたので,Webエンジニアを目指す方々へのtipsとして記事を書いていきたいと思います.

前回の記事はこちら▼

https://qiita.com/cocoa_folio/items/b8d9b435041233637cfa

前回に引き続き,今回はasync/awaitについて説明していきます!

#async/awaitとは

Promiseと一緒に用いられることの多い__async/await__
asyncとawaitって一体なんでしょう?
Googleで「async await」と調べてみると…

#####asyncとは
>非同期関数 — AsyncFunction オブジェクトである関数を定義します。非同期関数はイベントループを介して他のコードとは別に実行され、結果として暗黙の Promise を返します。ただし、非同期関数を使用したコードの構文および構造は、通常の同期関数と似たものになります。

#####awaitとは
>asy

元記事を表示

nodenvのパスが通らなかった

# 問題
nodenvのパスが通らなかった。
インストールの方法はnodenvのリポジトリのREADMEに従った。

試したことは

– nodebrewの削除
– bash_profileへのパスを記載

“`
export PATH=”$HOME/.nodenv/bin:$PATH”
eval “$(nodenv init -)”
“`

# 解決
https://github.com/nodenv/nodenv#understanding-shims

ドキュメントにあったパス指定にしたところパスが通った。

“`
export PATH=”$HOME/.nodenv/shims:/usr/local/bin:/usr/bin:/bin:$PATH”
$ eval “$(nodenv init -)”
“`

どうやらShimsというものが関係しているようだった。

> シムは、コマンドをnodenvに渡すだけの軽量の実行可能ファイルです。

ちなみにパスを通した後の確認はこのようになった。

“`
$ which node
/Users/{ユーザー名}/.nodenv

元記事を表示

フロントエンドエンジニアのNode.js基礎学習〜

# はじめに
近年、フロントエンドでもバックエンドの開発経験・知識が求められている時代になっているおり、フロントとして市場価値を高める上でも意識いたいっすよね。

今までは`JS`を中心に`Vue`,`React`などを学んでいたのですが、今回はサーバーサイドの`JS`実行環境である`Node.js`を入り口にバックエンドを少しづつ学習していこうと思い、妥当な流れで`Node.js`を技術選定しました。(phpとかrubyでもありかなと思いました。。)

– 今回は`Node.js`とは何か?
– `Node.js`でデファクトスタンダードの`Express`とは?

以上を初学者向けにアウトプット&備忘録として執筆しました。

ちなみに今年`2021年`の[stackoverflow survey 2021](https://insights.stackoverflow.com/survey/2021#technology)で人気のある言語技術で`Node.js`は第6位でした。
思ったより上位したね

#Node.jsとは

Web3.jsを使ってみる

#はじめに
EthereumのDapp開発をしているとよくweb3.jsに遭遇します。
今回はweb3.jsのインストールからよく使うメソッドの実行方法までを備忘録として残しておこうと思います。

#環境構築
まずNode.jsとnpmをインストールし、その後npmを使用しweb3をインストールします。

“`bash
$ apt list –upgradable && apt install -y nodejs npm
$ npm init -f && npm install web3
“`
無事インストール出来たか確認してみます。

“`bash
$ node –version
> v10.19.0
$ npm –version
> 6.14.4
“`
バージョン情報が返ってきたのでインストール出来ているようです。
ubuntuだとnpmが入らない場合があるようですが、僕の環境ではこれで大丈夫でした。

#jsファイルを作成する。
それでは早速jsファイルを作成し実行してみます。(ここではtest_web3.jsを作成)
予めgethを起動しHTTP-RPCを有

元記事を表示

node.js で DynamoDB に await put(or putitem)する時の正しい方法は?

# node.js でDynamoDBにawait putしエラーを捉える

検索して出てくるのがだいたい以下のコードでawaitした時のエラーの捉えかたの常套手段がわからなかったので書き留めておきます

“` javascript
dynamodb.put(param, (err, data) => {
if(err) {
// エラー処理
}
})
“`

# パターン1、異常動作例
putが2回実行されてしまう駄目な例です
callbackを呼んでかつpromise()を呼んだ実行をawaitで待ちます、エラーを取る事ができて一見正常動作に見えます。
しかしCALLBACKが2回呼ばれてしまうため正常動作とは言い難いです、結果的にはそれでも良い場合は多いかもしれませんが2倍処理が実行されると考えると正常動作とは言えないでしょう。

“` javascript
var aws = require(‘aws-sdk’);
//var dynamodb = new aws.DynamoDB({region:

元記事を表示

JavaScriptで役立つPromiseテンプレ(WebDevTips#1)

こんにちは,ココア(@cocoa_folio)です.
これまでは主にpythonに触れてきましたが,最近Javascriptを勉強し始めたので,Webエンジニアを目指す方々へのtipsとして記事を書いていきたいと思います.

# Promiseとは
Promiseとは,一体なんでしょう?
Googleで「javascript promise」と検索してみると…

##### Promise
>Promise オブジェクトは非同期処理の最終的な完了処理 (もしくは失敗) およびその結果の値を表現します。

という説明が出てきます.

「非同期処理ってなんだ?」と思った方,こちらもGoogleで「非同期処理とは」と検索すると…

##### 非同期処理
>非同期処理とは、一つのタスクを実行中であっても他のタスクを実行できる実行方式をいいます。 非同期処理をうまく実装することで、ユーザーはアプリケーションの処理待ちを気にすることなくアクセスすることができるため、ユーザビリティを考えるうえで重要な要素になります。

元記事を表示

[子育てIoT][環境構築]Raspberry PIでNode.jsなど

## 背景
私事ですが、そろそろ第一子が生まれます。
そんな子供に私ができることはと考えたときに思いついたのが、
IoTです。

子供の成長の記録を撮ったり、健康状態を確認したり、子供のおもちゃを作ったりなど。
まだ、何も作ってませんが何かできるのではと思ったのです。

本記事はタンスに封印していた、「Raspberry Pi 3 Model B」のホコリを払って、Node.jsをセットアップするまでの手順書(ただのメモになります)。
vim,zshは私のメインPCのMacと同じ構成にしたかったのでインストールしただけです。
まったくもって必須ではありません。

ちなみに、Raspberry Piの開発は一般的にはPythonの方が参考文献も多いと思いますので、
参考までに御覧ください。

間違ってたらぜひご一報ください。

## OSセットアップからSSH接続までの作業
他に沢山わかりやすいサイトがありますので、ぜひそちらを御覧ください。

## vim
* インストール

“`
apt-get install vim
“`
* vimの設定
とりあえず jj –

元記事を表示

Node.js 関連記事まとめ

Node.jsに関係する私の記事をまとめました。
新し記事を更新次第、随時こちらに追加をしていきます

元記事を表示

Elastic BeanstalkにTypescript+Expressのアプリをデプロイ

AWS Elastic Beanstalk(以下EB)を使ってNode.jsアプリをデプロイしようとしてつまづいたので、備忘録として残しておく。

# アプリケーションの概要

* Typescript+Expressで書かれたNode.jsアプリケーション。
* ローカルでは`ts-node`を使って起動している。

# デプロイしようとして失敗

[EBのドキュメント](https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html)には

> Procfile を指定しない場合、package.json ファイルを指定すると Elastic Beanstalk は npm start を実行します。これを指定しない場合、Elastic Beanstalk は app.js または server.js をこの順序で探し、実行します。

と記載されていたので、特に何もしなくても`npm start`が実行されて、`ts-node`でサーバが起動すると思って

元記事を表示

kintone プラグイン開発メモ 丸ごとファイルコピー

kintone プラグインの開発で、一つのプラグイン毎に製品版、試用版等全部で4つを作成している。
試用版は、製品版とほとんど同じで manifest.json など一部異なっているので、manifest.json を除き製品版ソースを試用版ディレクトリに丸ごとコピーして、プラグインにパッケージする。
node の fs-extra を使って、処理を作成したので、メモしておきます。

# 概要

manifest.json 以外のソースファイルを製品版から試用版にコピーするしくみを作成

– 製品版、試用版等で、少しづつ構成が異なり、manifest.json が4つある
– manifest.json 以外の製品版ソースファイルは、試用版にすべて必要
– 試用版にのみにあるソースファイルがある
– ファイル削除は、行わない
– 不要ファイルが生じたときは、マニュアル作業

# fs-extra とは

– [fs-extra](https://www.npmjs.com/package/fs-extra)
– node.js において、標準で利用できるァイル操作のライブラリ

元記事を表示

kintone プラグイン開発メモ バージョンの書換え

kintone プラグインの開発で、一つのプラグイン毎に製品版、試用版等全部で4つを作成している。
バージョンを管理している manifest.json も4つあり、バージョンアップの際にまとめて書き換える処理を作ったのでメモしてきます。

# 概要

プラグインファイルで、バージョンに関係しているものが下記で、バージョンアップ時にいちいち変更が必要。たまに忘れたり、間違えたりもする。
面倒なので、shelljs の sed を使って、書き換える。

– 製品版、試用版等で、少しづつ構成が異なり、manifest.json が4つある
– package.json で、プラグインをパッケージする kintone-plugin-packer の出力先のプラグインファイル名にバージョンを付与している。

# sed とは

unix コマンドで、テキストファイルの文字列を正規表現で書き換える定番のツール。
node で使える sed を調べたら、[shelljs](https://github.com/shelljs/shelljs/blob/master/README.md) があったの

元記事を表示

Node.jsでmongodb特有のIDを使う

#はじめに
 Mongodbには_idというMongoDB特有のIDがあります。これを自分から定義するのには、MongoDBshellで扱う場合ですらObjectId()という風にしなくてはいけません。ともかくMongoDBにおける_idの方はstringのような型ではなくて特殊な型をしているようです。node.jsおよびそこから別のプログラムに運び出した際に、エラーの原因になったので、これを解説していきます。

##バージョン
・Node.js      15.11.0
・MongoDB     4.4.6
・MongoDBドライバ 7.6.2

#ほんぶん
 例えばリレーショナルデータベースと同様にデータを最小化するために正規化する場合もあります。そうした場合ですけど、なぜだか_idがstring型に直っている場合があります。そうした場合、if文での評価でtrueになることがありません。そこで使えるメソッド紹介です。
##toString()

“`javascript
//id1をObjectId
//id2をstringとします
id1 = id1.toString()
if

元記事を表示

MongodbのfindOneで特定の要素だけ取り出す方法

#初めに
 ずいぶん前に質問していた内容を自己解決していたのにクローズし忘れていたということに今頃(数カ月後)になって気がついたため、折角だしその解決法を記事にまとめようと書いております。回答して下さった@anonymouさんほんとごめんなさい。それと回答してくれてありがとうございます!

##バージョン
・Node.js      15.11.0
・MongoDB     4.4.6
・MongoDBドライバ 7.6.2
#問題点
 そもそもの問題はfindOneの第2パラメータに値をセットしてみてもなぜだか動作しないというお話でした。

“`javascript
let result = await col.findOne({_id:~~~},{username:1});
//colにはdb.collectionでインスタントを定義済み。
//awaitはasync関数の中で実行しているという前提です。
“`

 このプログラムの実行結果はusernameだけが表示されるというものです。もし仮にconsole.logした場合が以下の通り

“`javascript
//間違い

元記事を表示

Codesandboxがうんともすんとも言わなくなったときの対応

[Codesandbox](https://codesandbox.io/)。node.jsベースのサーバサイドコードも手軽に実行できるすごくいいサービスなのですが、大きな難点があるため実は最近あまり使わなくなっていました。

それは、

**サーバサイド系は不安定で事実上使い物にならない**

という状態だったからです。

Codesandboxの各種テンプレートでは裏でnodemonが動作しているようで、コードの変更を検知して自動的に状態を更新してくれるのですが、node.jsテンプレートとかで一定の変更を加えると全く反応してくれなくなります。

100歩譲って動かなくなるのはいいのですが、そうなってしまうとそれ以上対応するすべがなくプロジェクトを破棄して新しく作り直すしか方法がなかったのです(しかも、新しいプロジェクトもなにかの拍子に動かなくなるという・・・)。

が、解決方法が見つかったので紹介します。

手順は、下記の通りです。

* 開発ブラウザデベロッパツールを表示しApplicationストレージを削除(Clear site data)
* Codesandboxから

元記事を表示

OTHERカテゴリの最新記事