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

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

node.jsでneo4jのOGMを使う④データを操作してみる

#1)準備:テストデータを入れる

適当にテストデータを作ります。

`create (:actor{name:”堺雅人”})-[:ACTS_IN{name:”半沢直樹”}]->(:movie{name:”半沢直樹”})`

`match (a:actor{name:”堺雅人”}) merge (a)-[:ACTS_IN{name:”小見門健介”}]->(:movie{name:”リーガルハイ”})`

`match (m:movie{name:”半沢直樹”}) merge (a:actor{name:”香川照之”})-[:ACTS_IN{name:”大和田常務”}]->(m)`

`match (m:movie{name:”リーガルハイ”}) merge (a:actor{name:”新垣結衣”})-[:ACTS_IN{name:”黛”}]->(m)`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397300/c502e26a-9794-8296-142a-a19758d8cfc3

元記事を表示

Azure Functions × Node.js × Typescript をローカルの仮想環境上のDockerで動かして VSCodeからデバッグ実行したメモ

## 概要

Azureのチュートリアル「[Visual Studio Code から Azure Functions をデプロイする][*1]」を行っていたところ、
関数のローカル実行でエラーとなった。
Nodeのバージョンによるものだったため、関数のローカル実行をDocker上で行うようにした。
デバッグ実行の設定を調べるのに時間がかかったため、備忘録として残す。

[この時点のソース](https://github.com/hibohiboo/develop/tree/f2a54792b18b9b309bc917ac27a6ca3fdf6a6c16/tutorial/lesson/ms-function)
## 環境

* Windows 10 Home
* chocolatey 0.10.15
* Vagrant 2.2.10
* virtualbox 6.1.16
* Ubuntu 20.04 LTS
* Docker version 19.03.13, build 4484c46d9d
* docker-compose version 1.27.4, build 4052

元記事を表示

AWS EC2においてポート80番でデプロイしたかった

# はじめに

Node.jsで作成したアプリケーションを、AWS EC2でデプロイしました。
ポート3000番ではデプロイできたものの、80番でデプロイすることができず色々と調べたので、
調べた内容や、解決方法について記します。

# 実行環境
– AWS EC2 (Amazon Linux2 AMI)
– Apache 2.4.46
– Node.js 12.19.0

# やりたかったこと

URLのポート番号表記を省略して、短いURLにしたかった。

`http://hogehoge:3000/` → `http://hogehoge`

https://www.google.com:443/ に接続したとき、
自動的にhttps://www.google.com/ にリダイレクトされることは知っていたので、*1
この応用で、3000ではなく80番ポートでデプロイすれば、

`http:[パブリックIPv4アドレス]:3000/` → `http:[パブリックIPv4アドレス]`

のようにポート番号の表記が省略され、URLを短くできると考えました。

> *1
ホスト

元記事を表示

node.jsでneo4jのOGMを使う③メソッド一覧

#node
|メソッド|引数|戻り値|説明|
|————-|—————|—————|—————|
|id()||int|Node ID|
|identity()||Integer|internal ID as a Neo4j Integer
|properties()||Object|プロパティ取得|
|get(property, or = null) |String:プロパティ名|mixin|指定したプロパティ名の値取得|
|valueToJson(property, value)|||
| model()||model|ノードのモデル取得|
| labels()||Array|ノードのラベル取得
|setEager(key, value)||node|Set an eager value on the fly
|delete(to_depth) ||Depth to delete to (Defaults to 10)|グラフからノードを削除します
|relateTo(node, type, propert

元記事を表示

Node.jsからCloud Storageを利用(入門)

# サービスアカウントの作成
[Google Cloud Platform](https://console.cloud.google.com/)にアクセスしてサービスアカウントの作成(API)を行います。
ナビゲーションメニュー > APIとサービス > 認証情報 をクリックし画面に移動します。
そしてサービスアカウントを管理をクリックします。
![GCP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/817075/18512082-f5d6-4f93-faa8-bb2ddaaa26be.png)

次の画面ではサービスアカウントを作成をクリックします。
![GCP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/817075/252ccae4-220b-ad61-4b18-5971d51dc04a.png)
サービスアカウントの詳細を各項目入力していきます。

|設定項目 |設定内容 |
|—|—|
|サー

元記事を表示

node-gyp rebuild 中に gyp ERR! stack Error: 403 status code downloading arm64 iojs.libが起きる

https://github.com/nodejs/node-gyp/issues/1933

にて報告されているが、node-gypのバージョンが5.0.5または、6.0.0のさいに起きるエラーのようである。

対策としては、node-gypのバージョンを5.0.6または6.0.1に上げることである。

## 解決方法

バージョンを上げよう。

“`bash
npm install node-gyp@6.0.1
“`

## GitHubActions内でこのエラーが起きた

ただ自分の場合、GitHubActions内で仮想環境を作って、このエラーが起こってしまったため、GithubActions内で参照しているnode-gypのバージョンを変える必要が生じていたのだが、前述したコマンドでは参照バージョンを変更することができなかった。

とりあえず、グローバルにnode-gypを落としてみたものの…

“`bash
npm install -g node-gyp@6.0.1
“`

ダメ…!

“`bash
Error output:
gyp WARN instal

元記事を表示

世界中から のあちゃん・えくくん(猫)と遊ぶ

### まえがき
「世界中の人に、のあちゃん・えくくん(猫)と遊んでもらいたい」
そんな思いから、世界中のパソコンやスマホを通して、ペットののあちゃん・えくくんとコミュニケーションがとれるものを作ってみました。
本当は猫じゃらしを振り回してもらいたかったのですが、まずはLEDを点灯させるだけの「光をともす」をやってみたいと思います。

↑ のあちゃんとえくくん ↓のあちゃんに光が灯される図

世界中からアクセスできる点については、ESP32を公開Webサーバ

元記事を表示

Gatsbyで「error Looks like develop for this site is already running, can you visit http://localhost:8000 ? If it is not, try again in five seconds!」での対処

# 事例

“`gatsby develop“`を実行すると以下が表示された

“`
error Looks like develop for this site is already running, can you visit http://localhost:8000 ? If it is not, try again in five seconds!
“`
http://localhost:8000
を調べても何も表示されないし5秒まっても再び実行しても同じエラー

何回か“`gatsby develop“`を実行した際に

“`
Something is already running at port 8000
✔ Would you like to run the app at another port instead? … yes
“`
とか出てたので他のポートで実行されているのかと思い
http://localhost:8001
http://localhost:8002
を確認して見たが何も表示されない

# 解決方法
localhostを使用してい

元記事を表示

node.jsでneo4jのOGMを使う①とりあえず動かしてみる

node.jsでOGM(オブジェクトグラフマッピング)を使うと簡単にデータにアクセスできます。

#環境変数の設定

①dotenvをインストールします。

“`
npm i –save dotenv
“`
②.envファイルをプロジェクトのディレクトリに作成

“`/.env
// .env
NEO4J_PROTOCOL=neo4j
NEO4J_HOST=localhost
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=neo4j
NEO4J_PORT=7687
NEO4J_DATABASE=neo4j
NEO4J_ENCRYPTION=ENCRYPTION_OFF
“`

#neodeのインストール

“`
npm install –save neode
“`

modesディレクトリを作成してモデルを定義

“`/model/user.js
module.exports = {
id: {
type: ‘uuid’,
primary: true
},
name: ‘string’
}
“`

元記事を表示

MacでYarnが実行できるようにする

2020.10.31時点

# やりたいこと
Macでフロントエンド開発ができるようにYarnを実行できるようにしたい。

# 結論
必要最小限のコマンドはこんな感じ。

“`
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
brew install nodenv
echo ‘eval “$(nodenv init -)”‘ >> ~/.bash_profile
source ~/.bash_profile
nodenv install 14.15.0
nodenv rehash
nodenv global 14.15.0
brew install yarn –ignore-dependencies
“`

# やったこと
下記のアプリをインストールしました。
1. homebrew
2. nodenv
3. Node.js
4. Yarn

# 説明
導入したものの用途とよく使うコマンドはこんな感じです。

## homebrew

元記事を表示

node.js+ExpressでAPIに呼び出し制限を実装する

node.js+ExpressでAPI作成するときに回数制限をかけたかったので実装メモ

#redisのインストール

Redisとは永続可能なインメモリデータベースです。
Redis上にアクセス情報を保持してアクセス制限を実施します。

yumでインストール

“`
# yum install -y redis
“`

バージョン確認

“`
# redis-server –version
Redis server v=3.2.12 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=7897e7d0e13773f
“`

redisサーバー起動

“`
# sudo service redis start
“`

#express-limiterの利用

回数制限をするミドルウェアのインストール

“`
npm install express-limiter –save
“`

“`
var express = require(‘express’)
var app = express()
var client

元記事を表示

TypeScript で実装した Robots をリファクタリングしてみた (まだCUI ver.)

ちょっとは TypeScript やってる感が出たと思うよ…

# はじめに

[前回の記事で実装した Robots ](https://qiita.com/takanassyi/items/db1e16aaf076bfaafe79)の TypeScript コードがあまりにも…ということでリファクタリングしてみました。

# クラス図

– ちょっと真面目に Robots をクラス設計を考えてみました。
– [MVCパターン](https://ja.wikipedia.org/wiki/Model_View_Controller)を意識して設計しました。
– Model 相当が Robot クラスでロボットの動きなどのルールを管理するロジックの担当。
– View 相当が Field クラスでターミナル上に表示する画面に関する処理の担当。
– Controller 相当が Game クラスでユーザーからの操作を受け付け、Robot, Field クラスとの連携を担当。

![robots-cd.png](https://qiita-image-store.s3.ap

元記事を表示

Typescript ts-node できない を解決

#TypeScriptのままでコードを実行したいよね?
手軽にTypeScriptのコードを実行したいとき「ts-node」が便利です。
しかし、上記のことを知らないとTypescriptを実行する時、
tsc→nodeと2つの作業が必要でした。。
これがまた手間でして。

「ts-node」が使えれば1つ手順で完了します。
神様ですね。

ざっくりこんな感じで楽になります.
>現状:tsc → node →確認
改善: ts-node →確認

実際に「ts-nodeの導入」で詰まって30分ぐらい無駄にしたので
以下に記載しておきます。

#こんな感じで詰まった
![なんでやねん.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684145/ac5b76f8-f556-e089-9d91-d5291b7b8460.jpeg)

#これで解決
公式?ドキュメントだと以下のように書いておりましたmm
https://www.npmjs.com/package/ts-node

“`
# Local

元記事を表示

vue cliとは

## vue-cliとは

>cliはCommnad Line Interfaceの略で、コマンドラインを使ってvue.jsで開発を行うための前準備を支援してくれるツールです。開発はプロジェクトという単位で行います。vue-cliを使ってプロジェクトの作成を行う際、プロジェクトで利用する機能のインストールも一緒に行うことができます。webpackも一緒にインストールされるでプロジェクトを作成すればすぐに開発を開始することができます。
https://reffect.co.jp/vue

vueで開発するための道具ってことか。

## インストール方法(node.jsがインストールされている必要がある。)

“`
$ npm install -g @vue/cli
“`

## プロジェクトの作成

“`
$ vue create vue-application
“`
このコマンドを実行した後に、こういう選択画面が表示される。

“`
Vue CLI v4.4.6
? Please pick a preset: Manually select features
? Check

元記事を表示

grpc-nodeでエラー時にerrdetailsを返却する

# grpc-nodeでエラー時にerrdetailsを返却する
gprcのバックエンドとしてnodeを選択するとフレームワークとして公式のgrpc-nodeが選択に上がると思います
https://github.com/grpc/grpc-node

正常系はそつなく実装できるのですが、エラー時にGoなどで言うところのerrdetailsを利用したくなったときに苦労したのでその覚書
(正確にはerrdetailsと呼ぶのかは分かりませんがGoのパッケージ名がerrdetailsなのでそう呼んでます)

## errdetailsって何?
gRPCのフレームワークが用意しているエラーの詳細を記述できるメッセージオブジェクトです
例えば、REST-APIを設計するときなどにjsonのエラーオブジェクトも設計する必要があると思うのですが、
統一的なフォーマットがなく(一応RFC7807という規格はあるが従っていることが少ない)、設計時に揉めるであろうことが予測されます

そこで、gRPCが用意しているメッセージオブジェクトと仕組みを利用することで、設計時に疲弊しなくて済みます

下の実装例

元記事を表示

npm scripts内の`echo`でダブルクォートを出力させたい

# TL;DR

こんなことを

“`sh
echo \”
“`

npm scriptsで再現したければ、こう書きます。

“`json:package.json
“scripts”: {
“double-quote”: “echo \\\””
}
“`

# 目的

こんなシェルコマンドを叩いて、

“`sh
echo { \”home\”: \”$HOME\” } > home.json
“`

変数を展開したJSONファイルを作りたかったんですね。

“`json:home.json
{ “home”: “/home/myname” }
“`

しかもnpm scriptsに書きたかったんです。

# npm scriptsでは挙動が違う

シェルで実行するときのままこう書くと、

“`json:package.json
“scripts”: {
“create-json”: “echo { \”home\”: \”$HOME\” } > home.json”
}
“`

`npm run`は正常終了するものの、出来上がるフ

元記事を表示

typeorm チュートリアル 一部抜粋 (+勝手に補足)

# 概要
– typeorm[^1]のチュートリアルが和訳されていない一部抜粋して和訳してみました.
– 基本的にDeepL翻訳で和訳して一部意訳しました,
– typescriptで上から実行してもエラーが発生するので,一部書き換えていきます
– “Creating a many-to-many relation”多対多リレーションの作成を解決できないのでそこまで

# 実行環境
– 使用言語: typescript
– node: v14.14.0
– データベース: MySQL

# 前準備
MySQLでデータベースを予め作成します.
設定は,
ユーザー名:root, パスワード:password, データベース名:typeorm_tutorial
ポート: 3306(デフォルト),
にしました.
GUIアプリケーションはtableplusを使用しました.

# クイックスタート
typeormのプロジェクトを作成します.
## typeorm をインストール
npmを使ってインストールします.-gで一度インストールすればOK

“`shell
npm install type

元記事を表示

[Vueサーバサイドレンダリング] webpackでoutput.libraryTarget should be commonjs2 と怒られた話[Vue SSR]

# Vue SSR 公式ガイドに沿って実装したら怒られた
公式ドキュメントを参考にして、Vue SSR を実装しようとしたところ、
webpackを経由してサーバーバンドルを作ろうとしたら、タイトルの通り怒られた。
`vue-ssr-server-bundle.json` が出来上がらない。。。

[公式ドキュメント]
https://ssr.vuejs.org/ja/guide/

[バグ]

“`
[vue-server-renderer-webpack-plugin] webpack config `output.libraryTarget` should be “commonjs2”.

[webpack-cli] Uncaught exception: Error: Entry “app” not found. Did you specify the correct entry option?
[webpack-cli] Error: Entry “app” not found. Did you specify the correct entry option?
a

元記事を表示

OvernightJSでNode+Express+TypeScriptなAPIサーバーを構築する

日本語情報が全く見当たらないExpressのTypeScript decoratorである[OvernightJS](https://github.com/seanpmaxwell/overnight)を使ってみたので、導入方法をざっくりまとめます。

Node/ExpressでTypeScriptを使う方法については、簡単に書きはしますが本筋ではないので詳細は他を当たってください。[このあたりとか](https://qiita.com/notakaos/items/3bbd2293e2ff286d9f49)参考になります。

# 前提環境

– Node 12.18.4
– Express 4.17.1
– TypeScript 4.0.3

開発環境でのTypeScriptの実行には[ts-node](https://github.com/TypeStrong/ts-node)と[ts-node-dev](https://github.com/whitecolor/ts-node-dev)を使います。ts-node-devはコード修正するとホットリロードしてくれるのでとても楽。

元記事を表示

描いて理解するイベントループ

# はじめに

早速ですが Node.js で次のコードを実行したときの出力がどうなるのかわかるでしょうか?

“`js:setTimeoutに0秒を指定
console.log(“start”);

setTimeout(function() {
console.log(“Hello!!!”);
}, 0); // 第2引数は 0 ミリ秒 = 0 秒待つ?

console.log(“end”);
“`

実は、出力は以下の順になります。

“`:実行結果
start
end
Hello!!!
“`

「なんで?」と思った人向けに、順を追って解説します。
「あたりまえじゃないか」と思った人はブラウザバックしてしまいましょう。[^help]

[^help]: ずっと Java をやっていて JavaScript はほぼ初心者です。初心者なりの理解を書いた記事なので、誤りがあったらコメント欄でやさしく教えていただけると嬉しいです。

# 1. イベントループ

この記事では JavaScript の実行環境を「ワンオペで黙々と作業をこなす従業員」に例えて説明します。

まず

元記事を表示

OTHERカテゴリの最新記事