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

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

SQL文で変数を使う方法 in JavaScript

# はじめに
Node.jsでExpress+Mysqlを用いてRestApiを作成する際、postでの処理に詰まったため備忘録として記事を書きます。

# 問題

|id(int)|name(String)|
|—|—|
|1|test|

このようなテーブルに対して、以下のソースを用いてpostでレコードを挿入する際、数値は入るが文字列はエラーが出て入れることができなかった。

“`sample.js

id=req.body.id;
name=req.body.name”;

//jsonで{id:2,name:”sample”}というデータを送信

sql=”INSERT INTO api_tbl VALUES(“+id+”,”+name+”)”;
connection.query( sql,function (error, results, fields) {
if (error) throw error;
res.send(“ok”);
});
“`
原因としては、postリクエストを送った際、sql文をセットしている変数`sql`に以下のような

元記事を表示

windows で npm i に失敗する

# やりたいこと

`npm i`

# エラー

“`
npm ERR! cb.apply is not a function

npm ERR! A complete log of this run can be found in:
“`

# 解決法

nodejs のインストールに nodist を使っていたが、node を直接インストールして実行するように変更すると動くようになった。

## 実行したコマンド

“`powershell
# nodist のアンインストール
> choco uninstall nodist
# node を直接インストール
> choco install -y nodejs.install

# shell を開きなおす
> node -v
v14.7.0
> npm -v
6.14.7
> npm i -g npm
+ npm@6.14.7
added 434 packages from 880 contributors in 6.276s
>
“`

元記事を表示

TwitterAPIをServerlessを使ってLambda + Nodejsで動作させてみた

# 概要
TwitterApiを使ってあれこれしたいと思ったので動かすまでの手順をまとめてみた
Nodejsで作成した理由はなんとなくフロントエンドと同じjavascriptでやれたら楽かなーと思ったぐらいです。

# 基本セットアップ
ServerlessやNodejsなどのインストールは以前私が書いた記事ですが、こちらが参考になるかと思います。
https://qiita.com/tama0571046/items/cfe262b002f6434b915e

TwitterAPIを使用するまでの流れは記事がたくさんありますので、調べるとすぐに出てくるかと思います。

私が参考にしたサイト

2020年度版 Twitter API利用申請の例文からAPIキーの取得まで詳しく解説

# Serverless
### ServerlessをAWSの連携
まずはAWSにログインして[IAM]の[ユーザー]からアクセスキーとシークレットキーを取得してきてserverlessに教えます

“`zsh
sls config credentials –p

元記事を表示

Could not find node.js. This will result in editors missing key features.となった時の対応方法

# Eclipseを使っていたらMissing node.jsってダイアログが出た
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/834ceb23-bae4-3602-9c97-657755775fd1.png)

## 原因 : Node.jsがインストールするされていないから
最近はEclipse使うのにNode.jsが必要なのか・・・

“`text:エラーメッセージ
Could not find node.js. This will result in editors missing key features. Please make sure node.js is installed and that your PATH environment variable contains the location to the ‘node’ executable.
(ざっくり訳)
Node.jsが見つかりませんでした。これにより、エディタに主要な機能がなくなります。No

元記事を表示

ローカルで開発中のnuxtプロジェクトをdockerコンテナ(別フォルダ)でnuxt startで公開する方法

## ローカルのnuxt開発環境をサクッとdockerで公開したい

全然サクッと公開できなかった・・・

開発環境で色々作っているnuxtのプロジェクト、普段はyarn devやnpm run devで開発・確認をしていますが、お客サンからの一言「どっかサーバーに上げて見れるようにしてくれない?」と。

ここで考えられる対応方法はいくつかあります。

・ビルドしてdist/ フォルダをS3やgithub経由でnetlifyとかにアップする。
 簡単。S3やgithub,netlifyの設定が必要。
 変更のたびにビルド→再アップが必要。

・開発サーバーを放置していいなら、直接 yarn serve(nuxt start)する
 一番簡単、ただしnuxt startをデーモンとして動かないので、サービス化するのに一手間必要。

・dockerコンテナをawsのec2上などに展開する。
 サービス化できるので放置できる。gitと連携しておけば、ファイル更新があってもpullしてコンテナ内で再ビルドできる。

楽なのは、ビルド済みのファイルをS3やnetlifyなどの静的ファイル公開サー

元記事を表示

nodenvでディレクトリごとにバージョンを指定する方法

今回はnodenvのセットアップ方法について簡単に紹介します。
先日、nodebrewのセットアップ方法について紹介したのですが、プロジェクト毎にnode.jsのバージョンを指定したかったのでnodenvに乗り換えました。
#はじめに
まず、node.jsのバージョン管理でnodebrewを使用していた場合にはnodebrewを削除する必要があります。
実際の手順を紹介します

##使用しているnode.jsのバージョンを控える
その前に現在使用しているnode.jsのバージョンを控えておきましょう。
以下のコマンドの実行結果を控えます。
`$ nodebrew list`

##nodebrewを削除
`$ brew uninstall nodebrew`

##設定ファイルの記述を削除

最後に利用しているシェルの設定ファイルから以下を削除します。
`export PATH=$HOME/.nodebrew/current/bin:$PATH`

この際、MacOSのバージョンによって設定ファイルが異なりますので注意しましょう。
###Catalina以前の場合

`vi ~/.b

元記事を表示

node.jsの標準のhttpsモジュールでAPIへのリクエストを実行する

## やりたいこと
node.jsの標準のhttpsモジュールでAPIへのリクエストを実行したい。
node.jsでHTTPリクエストを行う際には、[requestモジュール](https://github.com/request/request)が使われるケースが多かったようだが、[2020/2/11でdeprecated](https://github.com/request/request#deprecated)になったようなので、代わりにnode.jsの標準モジュールで実行したい。

## 実装

以下のような実装でリクエストを実行できた。
APIは、[zipcloud 郵便番号API](http://zipcloud.ibsnet.co.jp/doc/api)を試しに叩いている。

“`js
const https = require(‘https’); // 1: 標準のhttpsモジュールを使用

https.get(‘https://zipcloud.ibsnet.co.jp/api/search?zipcode=1000000’, (res) => {
if

元記事を表示

【npm】package, scriptsを利用した開発の際の知見や心得

## 概要
– JavaScriptでの開発において、npmを利用して得た知見や心得等のまとめ。
– 今回は、packageやscriptsに絞って記載。

## package

### package.json内の情報はできるだけ記述する
– こちらのメタ情報によって、Documentにもなりえる他、特定環境指定等、より多くの機能を与えることができるため。
– 例として下記のように指定することで、環境を制限して開発環境を統一することができる。

“`json
{
“engines”: {
“node”: “>=10”,
“npm”: “~5.0.0”
}
}
“`

### package.json内へのコメントは、フィールドを利用する
– JSON形式でありコメントの対応が無いため、記述する場合は下記のようにフィールドを利用する形で情報を与える。
– `comment`と記述しておくことで、検索が容易。

“`json
“comment”: “….”
“`

### ロックファイルは常にリポジトリにコミットする
– `package-loc

元記事を表示

DynamoDBのデータをnode.jsのReadableStreamに流す

DynamoDBテーブルのデータをざーっと `ReadableStream` に流し込みたかったが、どうやってバックプレッシャーに対応すればいいのか分からなかったので対応させてみた。

# やりたいこと

– DynamoDBからデータを読み込む(基本は内部バッファサイズ分)
– `ReadableStream` にpush
– ひたすら読み込んではpush
– 詰まったら一時停止
– 次回開始位置をpushしきれなかったアイテムに設定
– またpushできるようになったら続きから読み込み再開
– 以下繰り返し
– 全て読み込んでpushし終わったら処理終了

# DynamoDBのQuery/ScanとLimit

DynamoDBのQuery/Scan操作では `Limit` を指定することで取得件数を制限することができる。
ただ `Limit` は検索結果の件数制限でなので、`QueryFilter` や `ScanFilter` を掛けると検索結果がさらにフィルタリングされ指定した件数より少ない件数が返ってくる場合がある。

クエリーで検索し、指定件数分の結果が揃ったら、クエリ

元記事を表示

Linuxでts-node-devを使うときに、エラー `ERR_FEATURE_UNAVAILABLE_ON_PLATFORM` が発生したときの対処法

## 発生したエラー

“`
TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
at Object.watch (fs.js:1470:11)
at add (/home/reoring/git/yyts/yychat-server/node_modules/filewatcher/index.js:74:34)
at /home/reoring/git/yyts/yychat-server/node_modules/filewatcher/index.js:93:5
at FSReqCallback.oncomplete (fs.js:177:5)
“`

## 対処法

node-devの起動オプションに`–poll`を追加する。

“`
“scripts”: {
“start

元記事を表示

nodeの使用可能メモリを増強する場合、vm.max_map_countによる制限がかかることがある

# 環境

– 言語:node v14.7.0
– CPU
– AMD Ryzen 9 3900X 12-Core Processor
– Processer 24
– メモリ容量:62.8GB
– OS:Ubuntu 18.04.4 LTS (Bionic Beaver)

# あらまし

メモリを64GB搭載しているUbuntu上で、 `–max-old-space-size` オプションによって最大消費メモリを48GBに拡張した状態でnodeを動かしたところ、プログラムの内容に依存して、48GBを使い切れる場合と、20GB程度を消費した時点でメモリエラーが発生する場合の2通りの挙動があった。

その原因はプログラムの動作の違いによるメモリアロケーションの仕方の違いにあり、メモリを使い切れないプログラムではマッピング数が超過することによりmmapシステムコールがENOMEMを発生させることによるものだった。

`sudo sysctl -w vm.max_map_count=655300` コマンドによりシステムの最大マッピング数を拡張した結果、与えたメモリをプ

元記事を表示

nodebrewで入れたnodeが存在するのにno such file or directoryになる問題

**【注意】これを読んでも解決しません**

# 環境
– Raspberry Pi 4
– Ubuntu Mate 64bit
– nodebrew 1.0.1
– node v12.18.3

# 症状
nodeコマンドが実行できない

“`shell
$ node -v
-bash: /home/user/.nodebrew/current/bin/node: No such file or directory
“`

“`shell
$ ls -la /home/user/.nodebrew/current/bin/node
-rwxr-xr-x 1 user user 40769188 7月 31 14:06 /home/user/.nodebrew/current/bin/node
“`

あるじゃないか!!!

…存在するファイルの no such file or directory は、どうやら32bitに対応していない64bit OSで32bitのバイナリを実行しようとしたときに出るらしい?

# 諦め
たぶん
「[Can we update t

元記事を表示

herokuでNode.jsを立ち上げるまでの手順

色々と理解できていないことは多いですが、とりあえずherokuで立ち上げられたので手順を記載。
エラーでまくったしいろんなサイト見すぎてもはや何を参考にしたのかわからなくなってます。

# 前提
① Node.js、herokuはインストール済み
② パッケージマネージャーはyarnを仕様
下記の記事を見てyarnにしました
https://qiita.com/qulylean/items/afa2acff6ed963c88798

# yarnのインストール
上記の記事を参考にyarnをインストールします。

# yarnでhttpモジュールのインストール

コマンドプロンプトを立ち上げて今回作成したいフォルダまでディレクトリの移動をします。

“`
フォルダの移動
$ cd フォルダ名

前に戻る
$ cd ..

フォルダの作成
$ mkdir フォルダ名

フォルダを作成して移動
$ mkdir フォルダ名 && cd フォルダ名

ファイルの作成
$ type nul > ファイル名
“`

ディレクトリの移動が完了したら下記のコマンドを実行します。

“`
$ y

元記事を表示

【Express】ミドルウェアとは何か

##ミドルウェアとは何か
ミドルウェアとは:サーバーの動作をカスタマイズするもの。
ルーターハンドラが作動する前に何かを行うもの。

・ミドルウェアがない時

“`
新しいリクエスト

通常のルーターハンドラが作動
“`

・ミドルウェアがある時

“`
新しいリクエスト

ミドルウェアが作動!

通常のルーターハンドラが作動
“`

##ミドルウェアの設定

“`javascript

app.use()
“`
を用いて設定する

##ミドルウェアの動作例
・リクエストしているHTTPメソッドと、リクエストを送っているパスをターミナルに表示させる

“`javascript
app.use((req, res, next) => {
console.log(req.method, req.path) 
next() //ミドルウェア機能の終了を明示的に表示
})
“`

・ミドルウェアを使ってアクセスを制限する

GETリクエストを送るとアクセスを拒否され、それ以外だと通常のルーターハンドラが

元記事を表示

npmコマンドを使えるようにするまでのまとめ【mac】

macの初期状態ではnpmコマンドを使うことができないので、それを使える状態になるまでを記事にまとめました。
macでnpmコマンドを使えるようにするには、Homebrewのインストール,Nodebrewのインストール,Node.jsのインストールが必要なので、それを順番にインストールしていきます。

#### このページの最後に順番にやっていった場合の各場面での画面のスライドを埋めこんでいますので、解説が分からない場合は、そちらで確認しながらやってみてください!

## Homebrewのインストール
パッケージ管理システムのひとつのHomebrewをインストールします。
(パッケージをmacに最適にインストールしてくれるようにするツールです)

npmインストール1.png

[Homebrew公式](htt

元記事を表示

Node.jsとJavascriptの違い、関係について

# はじめに
はじめてNode.jsを学んだ方や使用した方はこう思いませんでした?

**「なんで同じJavaScriptなのに名前が違うの?サーバーサイドで動くJavaScript?使ってるけどいまいちよくわからない…」**

そんな疑問を持った方たちのために簡単に解説していきます。

# 言語・処理系について
そもそもプログラミング言語とは、コンピュータに情報や命令を伝えるための**「文字・記号の集まり及びそのルール」**です。そして、プログラミング言語によって書かれた文字列を処理系によって処理することで、コンピュータに情報を伝達することができます。

日本人は日本語を理解することができますよね?逆に、日本語を知らない外国人は日本語を理解することができません。これは、日本人が頭の中に日本語の処理系を持っているから言語を理解できるのです!

このように言語は、その言語の意味やルールを処理・理解してくれる処理系がないと全く機能しなくなってしまいます。

# プログラミング言語における処理系とは?
日本語や英語などを理解するための処理系はそれぞれの人間の頭脳でした。じゃあ、プログラミング

元記事を表示

heroku×node.jsでcorsエラーがなかなか解決しないときに気をつけること

node.js(express)でサーバーサイドを記述し、herokuに上げていたのですが、今まではすんなりと解消できていたcorsのエラーに嵌ってしまったので、記事を書くことにしました。
# 環境
– heroku: 7.42.5
– node.js: 12.16.2
– express: 4.17.1
– cors: 2.8.5

# 基本的な対応方法
今回はサーバーサイドとフロントエンドを異なるレポジトリに書いているため、フロントエンドからfetch等でサーバーサイドのAPIを呼ぶ際には、corsのエラーが生じてしまいます。
>Access to fetch at ‘https://xxx.com’ from origin ‘https://yyy.com’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the req

元記事を表示

MERNスタックを学べる動画をまとめてみた(外国語の動画です)

# MERNスタック is 何?
MongoDB, Express, React.js, Node.jsの4つを使った開発環境のアーキテクチャのことです。主に、Webアプリ開発に用いられます。

## MongoDBとは
ドキュメント志向のNo-SQLデータベース。データの保存などに使う。DBは、データベースの意。データがJSON形式みたいな感じなので非常にJavaScriptと相性が良い。

## ExpressJSとは
Node.jsのフレームワーク。Node.jsの機能と一緒に使う事で、バックエンドの構築が出来る。

## ReactJS
単一ページWebアプリのUIを作成するUIコンポーネントを構築出来る。アプリケーションのView部分を担っている。

## NodeJSとは
サーバサイドJavaScriptエンジン のことです。

# MERNスタックの良いところは?
ずばり!!
全部JaveScriptで書けることです!JavaScriptはフロントだけでしか使えへんやろ・・・。と思われがちですが、なんでも行けちゃうんです。もし、HTML,CSS,JavaScriptという

元記事を表示

Node.js新規アプリケーション作成時の設定手順

**前提条件**
node.jsがインストールされていること

# 手順
1: 任意の場所に、アプリケーションを格納するフォルダを作成する
・・・今回はデスクトップにnodeフォルダを作成
 

2: コマンドプロンプトにて下記コマンドを入力し、package.jsonを生成する

“`sh:入力
> cd C:\Users\yamapi1012bs\Desktop\node
# ↑ユーザー名

> npm init –yes
# package.jsonがフォルダに生成される
“`

“`sh:
#以下のように出力されればOK
Wrote to C:\Users\yamapi1012bs\Desktop\node\package.json:

{
“name”: “node”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {
“test”: “echo \”Error: no test specified\” && exit

元記事を表示

MEVN STACKとは〜Vueでフルスタックに作りたい〜

# MEVN STACKって何?
## MEVN STACKってこういうのだよ
### MEVN STACKとは、

– Mongodb
– Express
– Vue.js
– Node.js

の頭文字を取ったもの。
類似にMEAN STACK(Mongodb,Express,AngularJS,Node.js)もありますね!
Qiitaには、MEANはあったけどMEVNについてはなかったので、これから頑張って書いていきたいと思います。
もし少しでもいいね!と思ったら「Looks Good To Me!」をください。励みになります!

## 構成はこうすればできるよ
それぞれの役割についてです。

![vue-node-express-mongodb-crud-mean-stack-architecture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573960/39bb10fc-833a-1841-5c08-cfce39404605.png)
[引用画像:https://bezkoder.co

元記事を表示

OTHERカテゴリの最新記事