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

Node.js関連のことを調べてみた2020年04月02日
目次

MERNスタックをDockerでやっていく

### はじめに
30代正社員経験のないクズ人間だけどSHUSHOKUできました!やったー!
うれC!!!!!!!!うれC!!!
MERNスタック使って、ポートフォリオ用にWebアプリ作ってみたけど、大変だった気がします。正直全部大変だし難しいし自分が何やってるかよくわからない感じになります。頭が悪いので整理ができない……(´・ω・`)
DockerでMERNスタック環境構築したらDocker使っちゃう気持ちもアゲアゲでいけるのでは?などと考え、あとからECRやら楽なんじゃね?とか思っていた時期が自分にもありました。

MERNスタックでなんかDockerもつかって気軽に色々できればいいなあというわけで、今後忘れないように書いておこうと思います。

Dockerについては、「[何故Dockerなのか](https://www.docker.com/why-docker)」とか、なんか公式読めば良いとかいう風潮がある気がします。
公式は字が多すぎて読む気がおきないみたいなやつはあります。でも、読め!とインターネッツの中の人たちが言ってくるので読みました。読んでもよくわからないので、脳

元記事を表示

途中で戻したり進めたりできるイテレータ

構文解析する際に、文字列イテレート中に戻したりスキップしたりできるイテレータがあれば便利かと思い作ってみました。
参考: https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators

“`js
function iter(pattern) {
let index = 0
return {
[Symbol.iterator]: function() {
return this
},
next: function() {
if (index < pattern.length) { return { value: pattern[index++], done: false } } else { return { done: true } } },

元記事を表示

Node.jsをChrome DevToolsでデバッグする方法

Node.js は標準で Chrome DevTools と接続しデバッグする機能が付いています
普段から使っている Chrome DevTools と同じ感覚で使えます
ヒープメモリのスナップショットも取れるためメモリリーク調査にとても便利だったのでやり方をまとめておきます

## 対応バージョン
– node v6.3.0以上

## やり方

### 1. node を `–inspect` オプションをつけて起動する
“`shell
node –inspect index.js
“`

### 2. Chrome で `chrome://inspect` を開く
こんな画面が開きます
うまく動いていると Remote Target の下に認識しているアプリケーションが表示されます
スクリーンショット 2020-04-01 17.59.04.pngTypeORM x AuroraDataAPI – タイムゾーン問題への対処

# TypeORM x AuroraDataAPI – TIMEZONE問題への対処

ローカルタイムゾーンがJSTだとしたとき、
DBに書き込まれる時刻が9時間未来になる(JSTのまま書かれてしまう)
DBから読み込まれる時刻が9時間過去になる(JST扱いで読まれてくる)問題への対処です。

## 前置き
本記事の解決法では、TypeORMの外側で自力で時刻を補正するため、
ライブラリ(TypeORMとAuroraプラグイン)の仕様が変わったり、バグが治った場合は毒になりえます。
そのへんの影響まで自分で管理してやんよシュババってひとむけです。

## 環境

– Aurora Serverless MySQL 5.6
– time_zone, system_time_zone: `UTC`
– TypeORM 0.2.24
– typeorm-aurora-data-api-driver 1.1.8
– Node 10
– timezone(TZ環境変数): `Asia/Tokyo`

上記環境 (TypeORM x AuroraDataAPI) での観測ですが、

元記事を表示

SyntaxError: Identifier ‘jest’ has already been declared

create-react-appをejectしてyarn testを実行すると掲題のエラーが発生しました。
たまたま直せたので、直し方を書いておきます。

“`
FAIL scripts/test.js
● Test suite failed to run

SyntaxError: Identifier ‘jest’ has already been declared

at Runtime._execModule (node_modules/jest-runtime/build/index.js:867:68)
“`

`jest` がすでに定義されているよ、というエラーです。

このエラーだけだと何が起きているかよくわからなかったんですが、 https://github.com/facebook/create-react-app/issues/1319 を読むと、`scripts/test.js` もjestのテスト対象になっているせいで発生しているようでした。

jestの対象ディレクトリからscriptsを除外すれば直ります。

“`jest

元記事を表示

babelの設定ファイルをTypeScriptで書く

表題の通りです。
`babel` の設定ファイルといえば `.babelrc` `babel.config.js` での記述が一般的だと思います。これを `babel.config.ts` に記述できるようにします。

## 1. 必要モジュールのインストール
とりあえず `webpack` 前提で必要最低限なものだけインストールします。

“`
npm i -D webpack webpack-cli typescript ts-node @babel/core @types/babel__core babel-loader @babel/preset-env
“`

ほとんど説明するほどのものではないですが、重要なのは `@types/babel__core` です。
ここに設定ファイルで使用する型情報が載っています。

## 2. TypeScriptの設定
`tsconfig.json` を書きます。

“`tsconfig.json
{
“ts-node”: {
“compilerOptions”: {
“module”: “commonjs”,

元記事を表示

Node.js+Expressのインストール、起動まで

node.jsのインストール
EC2のセキュリティグループの設定で3000番を開けておく

“`
インストール
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
$ . ~/.nvm/nvm.sh
$ nvm install node

バージョン確認
$ node -e “console.log(‘Running Node.js ‘ + process.version)”
“`

expressのインストール

“`
npm init -y
npm i express -S
“`

サーバーのファイルの記述し、実行する。

“`
$ mkdir src
$ mkdir src/public
$ vi src/app.js
$ vi src/public/index.html
$ node src/app.js
“`
“`js:src/app.js
// express モジュールのインスタンス作成
const express = require(‘expre

元記事を表示

AWS Command Line Interface (CLI) の出力を `–query` で制御し、パイプラインで活用する

![job_tobisyoku.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486518/bdb20f63-1055-136c-19c4-425689b6a65d.png)

これを

“`
% aws organizations describe-organization
{
“Organization”: {
“MasterAccountEmail”: “master-account@your-organization-example.com”,
“MasterAccountArn”: “arn:aws:organizations::111111111111:account/o-xxxxxxxxxx/111111111111”,
“MasterAccountId”: “111111111111”,
“Id”: “o-xxxxxxxxxx”,
“AvailablePolicyTypes”: [

元記事を表示

tsoa で 3rd party 製の型利用時のエラーを無視するモンキーパッチ

# tsoa で 3rd party 製の型利用時のエラーを無視するモンキーパッチ

– この記事の対象者
– `tsoa` を活用し始めていて、
– `generateSwaggerSpec` や `generateRoute` が自力でできて(できかけて)いる人
– 外部の型つかうんじゃねぇよ、って tsoa に怒られてる人

## 前提
[tsoa](https://github.com/lukeautry/tsoa) という便利なライブラリを、 express wrapper として活用しています。

かいつまんで説明すると、
controller を記述することで、 swagger 定義と express の routes 定義を自動出力でき、
controller と swagger のダブルメンテを行うことなく、快適に REST API 開発が可能になります。

ちなみに例に用いるリポジトリでは、
TypeScript 用 ORMapper である [TypeORM と AuroraServerless MySQL を組み合わせて](https:

元記事を表示

Pythonのprint出力をNode.jsが認識できない問題について

こんにちは。
こちらの記事は、Python-shellを用いたNode.jsとpythonの連携時に発生したバグの
解決方法について、自らの経験を記述しているものです。
英語が分かる方はこちらの公式ドキュメントを参照していただいた方が正確ですので
ご参照ください。
https://www.npmjs.com/package/python-shell

**バージョン**
python 3.8.1
pyenv 1.2.17
node.js 13.3.0

##問題
Node.jsからpythonのスクリプトに引数を渡して実行させ、実行結果を
Node.jsで受け取ったところ、
python側の出力では正しくjsonデータが送られているのですが、
Node.js側では空文字からなるリスト[”]しか受け取れないという現象が発生しました。
また、この現象が発生した際には、pyenvを用いて作成した環境下で行っていたのですが、
system環境で実行したところ、正常に値を受け取ることが判明し、
環境の違いによってコードが動いたり、動かなかったりする状態でした。

該当コードは以下の通りです。

元記事を表示

swagger-nodeとDockerで簡単にモックサーバーを構築する

# はじめに
APIを呼び出す機能をテストする際に、とりあえずモックサーバーを立てたい。
そんなときに便利なのが、SwaggerのNode.js 製のモジュールである[swagger-node](https://github.com/swagger-api/swagger-node)です。

SwaggerでAPIを定義しておくだけで、モックサーバーを起動できます。
便利なのは、自前でテストデータを用意しなくても、データ型(string, number, boolean, array, object etc)に応じた適当な値をレスポンスしてくれる点です。

Swaggerの概要やswagger-nodeの使い方はこちらで紹介されているため、詳細は割愛します。
[Swaggerとswagger-node](https://qiita.com/jooex/items/cae3266f6b0d120facac)

この記事では、Node.jsのインストールが面倒なのと、環境を汚さずに使いたいということで、
swagger-nodeとDockerを組み合わせてモックサーバーを構

元記事を表示

これからはじめる、Gatsbyのインストールから静的サイトのビルドまで

Gatsbyは次のWordpressとも言われている、Reactベースのオープンソースフレームワーク。

超高速なWebサイトやブログ、アプリを簡単に作ることができ、今最も注目されているCMSツールでもあります。

ここではGatsbyをこれからはじめる人のために、インストール〜静的サイトのビルドまでをサクッと解説していきます。

## Node環境のインストール
まずは環境のチェック。nodeは11.10以降にする必要がある。

brew使ってたので、brewでnodeをアップデートする。

node入ってない人は[ここ](https://nodejs.org/en/)からダウンロードできる。

“`
brew upgrade node

// nodeをインストールしてない場合
brew install node
“`

インストールできたらnodeのバージョンチェック。

“`
node -v
v13.11.0
“`

## Gatsbyのインストール

“`
npm install -g gatsby-cli
gatsby new gatsby-site
cd gat

元記事を表示

discord.js最新版での罠(私的メモ)

discord.jsが11.xから12.xにアップデートされたので自分が引っかかりまくった点をサクッと書いていきます

# Nodejsとdjsのバージョン
discord.js 12.xからはどうやらnodejs 12.xからじゃないと出来ないっぽくて見事にハマってました
自分はちょっと都合でnodejs8.10くらいを使ってまして、discord.jsを入れてbotを起動させようとしたら謎の場所でエラー吐いてまして…色々調べてたらバージョン関係で使えなかったことがわかって仕方なくnodejsとnpmを最新版にして使いました

# djsの仕様変更
色々と変わったので自分が知ってる限りの仕様変更部分をまとめます。

## xxxs系
xxxs系は`.channels`や`.guild.roles`などの複数の情報が入ってるやつです。
11.xでは`.guilds.get(‘channelId’)`などで出来たのですが、最新版になって`.guilds.**cache**.get(‘channelId’)`と、**cach

元記事を表示

autodetect’: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.

masterからサブブランチに切り替えて、

“`
rails s
“`

をしたら、

autodetect’: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.

とエラー分が表示され、Javascriptになにか関係が??初めて見るエラー分で、何かしたかと思っていると、、、、

最近、何かとこのエラーに遭遇する人が多いだとか、、、、、

私の場合は、masterからサブブランチに切り替えたときに起こりましたが、これはタイミングが被っただけではないでしょうか。

解決策としては、gemfileに

“`
gem ‘therubyracer’
gem ‘libv8’
“`

として、bundle installでいけるのかと、思いきやここでエラー分が出たため、node.jsをインストールすることにしました。

一度、上記のgemをインストールできるか試してみてください。

node.jsをhomebr

元記事を表示

AWS IoT のクライアントデバイス環境を簡単に作るスクリプト(Node.js v2 版)

ちょこっとテストするための、Node.js版のAWS IoT Device SDK v2のPubSubをすぐに試すスクリプトです。CLI上で数行でできます。
Python版は[こちら](https://qiita.com/tatsuhiroiida/items/bb9e801702ed0e641fa1) だいたい同じです

Cloud9上での設定を想定しています。マネコンで作成するのが手間な場合に使います。
何をやっているか等は説明しません。。
あと、手動で何発かメッセージを送るだけであれば、IoT Coreのテスト機能を使うのがよいです。

### 準備
Cloud9 の環境にはUbuntuを選びます。Amazon Linuxだと、`GLIBC_2.25` が無いというエラーが出ております。
Cloud9の環境を作成し、以下をEnvironmentディレクトリ下に置きます。

“`sh:setup-node-v2.sh

mkdir $THING_NAME
cd $THING_NAME
POLICY_NAME=${THING_NAME}_Policy

aws iot creat

元記事を表示

Node.js(express+ejs)のWebアプリサンプルをDocker上で動かす

# はじめに
* Node.jsをDockerで起動し、適当なWeb画面を表示させるところまでをやります
* Node.jsでのサンプルは[Akinari Tsugoさんの記事](https://garafu.blogspot.com/2016/07/nodejs-express-webapp-tutorial.html)を参考に実装しました

# やったこと
* Node.js(express + ejs)の環境をdockerで構築する
* express + ejsを使用したWebアプリサンプルを作成し、docker上で起動させる

# 使用するフレームワークについて
## expressとは
* Node.jsでWebアプリを開発する際に使用するフレームワーク
* 画面遷移とかWebアプリ開発に必要な諸々をサポートする機能あり
* [expressの公式はこちら](https://expressjs.com/)

## ejsとは
* JavaScriptでHTMLを作成できるテンプレート言語
* JavaでいうところのJSPに相当する
* [ejsの公式はこちら](http

元記事を表示

Jest+CircleCIなプロジェクトにCodeCov(カバレッジレポート)を導入するまでの手順ハンズオン

# 概要
– テストのコードカバレッジのレポートに**CodeCov**を使いバッジ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/170905/cb59a150-2e71-e4c6-fae9-7705808cf3cb.png)をゲットするまでのハンズオンメモです

## 開発環境と構成

– 開発環境

開発言語 JavaScript(ES6)/Node.js
テストフレームワーク Jest
Gitホスティング GitHub
CIツール CircleCI
カバレッジレポート CodeCov

– 構成
全体としてはざっくり以下のような構成となります

![image.png](https://

元記事を表示

Netlify Functions で古のアクセスカウンター(アクセサリー)をつくる

## はじめに

既にホスティングサービスが終了している懐かしの「ジオシティーズ」ですが、[スケジュール上では 2020/3/31 に全ファイルの削除](https://info-geocities.yahoo.co.jp/close/)が行われるようです。

自分にはジオシティーズ上で 2005年くらいまで更新していたサイトがありましたので、FTP でファイルを救出し [Netlify](https://www.netlify.com/) の無料枠にて記念に再ホストすることにしました。

…できたものの何かが足りない。

![2020-03-30_01-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102286/e32bf371-2b95-52ce-2d4e-a342ec90ed19.png)

アクセスカウンターだ!

ということで Netlify に備わる Lambda なサービス Netlify Functions でアクセスカウンターをふとつくってみることにしました。

お気づきのように

元記事を表示

Mac HomebrewでNode.jsをインストールする

# 目的

– Mac端末にHomebrewを用いてNode.jsをインストールする方法をまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| OS | macOS Catalina(10.15.3) ||
| ハードウェア | MacBook Air (11-inch ,2012) ||
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 ||
| メモリ | 8 GB 1600 MHz DDR3 ||
| グラフィックス | Intel HD Graphics 4000 1536 MB ||

# 実施条件

– Homebrewが使用できる状態になっていること。

# 実施方法概要

1. Nodebrewのインストール
1. Node.jsのインストール
1. 設定

# 実施方法詳細

1. Nodebrewのインストール
1. 下記コマンド実行してNodebrewをインストールする。

“`terminal
$ brew inst

元記事を表示

常に動くLINEBOTにお引っ越し(レンタルサーバ+PHP編)

#今回のモチベーション
前回、[こちら](https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d)の記事を参考にWikipedia APIを使った、調べものLINE botを作った。

前回の記事
https://qiita.com/shima-07/items/2322598ca5a40cfee47b

だが、

– ngrokを立ち上げている時しか使えないから普段使えない。
– いざ、ngrokを立ち上げるとアドレスが変わってしまうため、Messaging API settingsのwebhook URLを毎度変えないと動かない。

うーん。。。
##### ngrok立ち上げるのめんどくさい! 常に使えるようにしないと意味ないじゃん!
と思ったわけです。だから『常に動くようにしよう!』が今回の動機です。

# 今回やったこと
– 1. まずは [now](https://zeit.co/download) を試してみた
– 2. さくらのレンタルサーバでやることにした
– 3. jsで書いていたものをPHPに書き直した

最終的

元記事を表示

OTHERカテゴリの最新記事