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

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

curlを使ってjavascriptを有効にした場合のhtmlソースを取得する

[domcurl](https://github.com/PaulKinlan/domcurl)というツールがあります。webscrapingに非常に便利なツールです。`phantomjs`などで要件を満たせない場合におすすめです。

> domcurlはPuppeteerを使う小さなNodeJSアプリケーションで、 npm i domcurlコマンドを発行することでインストールできます。 curlコマンドのように、簡単なdomcurl [url]を発行してリソースを取得し、JSをページ上で実行することができます。
>
> https://paul.kinlan.me/domcurl/

“`sh
$ npm i domcurl
$ ./node_modules/domcurl/index.js –url https://example.com
“`

元記事を表示

コマンドラインからjavascriptでレンダリングされたHTMLソースを取得する方法

`curl`からは、javascriptを有効にしたブラウザと同じHTMLソースを取得することが難しいことがあります。このような場合、`phantomjs`を使用すると便利です。

“`sh
$ npm i -g phantomjs phantom
“`

公式サイトにてバイナリも配布されてるので、`node`からのインストールが依存関係などで失敗する場合、こちらをダウンロード、解凍して実行権限を与えると良いでしょう。

https://phantomjs.org/download.html

“`sh
$ curl -sLO https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
$ aunpack phantomjs-2.1.1-linux-x86_64.tar.bz2
$ cd phantomjs-2.1.1-linux-x86_64/bin/
$ chmod +x phantomjs
$ ./phantomjs –version
“`

“`js:set

元記事を表示

npm ERR! code ELOOP が出たときの対処法

npm install を使った時に

npm WARN checkPermissions Missing write access to /Users/[ユーザー名]/node_modules/[ファイル名]
npm WARN [ユーザー名]@1.0.0 No description
npm WARN [ユーザー名]@1.0.0 No repository field.
npm ERR! code ELOOP

というエラーが出現してハマりました。これを仮説で解決できたので同じエラーでハマった方向けに書いておきます。

まず一番上にnpm WARN checkPermissions Missing write access to /Users/[ユーザー名]/node_modules/[ファイル名]

と書いてあります。

この意味は「ファイルにアクセスできない」という意味です。

この理由として考えられるのは

①ファイルへのアクセス権が無い
②ファイルそのものが無い
③ファイルパスがおかしい

のどれかです。

①の場合の対処法は公式にも書いてあります。

元記事を表示

webpack.config.js の書き方をしっかり理解しよう

#`webpack.config.js`
僕の中で少し苦手なイメージのある`webpack`について、改めて向き合って理解していこうと思います。
`webpack`に苦手意識がある人のほとんどは、この`webpack.config.js`について理解していない人がほとんど。なので、今回は下記の`webpack.config.js`について丁寧に説明していきます。

“`javascript:webpack.config.js
const path = require(‘path’)
const webpack = require(‘webpack’)

module.exports = {
entry: {
index: path.join(__dirname, ‘src’, ‘index.js’)
},
output: {
path: path.join(__dirname, ‘out’),
filename: ‘main.js’
},
devtool: ‘cheap-module-eval-source-map’,
target:

元記事を表示

Node-RED Version1.1 の更新まとめ (1.1 released ブログのざっくり翻訳)

Node-RED [Version 1.1 released](https://nodered.org/blog/2020/06/30/version-1-1-released#inject-node-properties) されましたね!更新内容をざっくり翻訳して実際に眺めてみましたので、簡単にまとめておきます。

# Node-RED v1.1 環境を用意する

Node-RED をちょっと試したい場合、IBM Cloud の無料スターターキットか、ローカルでのフォルダを指定したインストールがお勧めです。

## IBM Cloud でサービス作成してみる

IBM Cloud では無料のライトプランで Node-RED 環境を構築できるので、新規に再作成してみました。2020年7月4日現在、v1.1.0 になっています!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/52c4d97b-2c09-153a-71c8-df65bdb108fa.png)
ちなみに、Nod

元記事を表示

Node.js 依存モジュールのファイルはケースセンシティブの件

皆さん開発の時ほとんど macOS を使ってるんでしょうか、だが macOS のファイル名はケースインセンシティブ(大小文字は区別しない)。つまり同じフォルダ下に `package.json` と `packagE.json` は一緒にいられない。

ほとんどの人は知ってるかにもかかわらず、あまりこれに注意を払ってないのではないかなと思って、だってみんなの母語は英語ではないし、インポートの際は intelliSense も結構賢く補足してもらってるので、あんまりここに転んだことはないと思います。転んでもすぐ忘れるんだろう。

よく会った問題はこれです?

# Linux でデプロイ時にモジュールは見つからない

多分誰がメモ帳で書いたコード

“`javascript
const list = require(‘./List’);
“`

でも List のファイル名は`list.js`、

そしたらすべての List を list に変えなきゃいけない。

細かい点で解決には難しくないが、時間ちょっと無駄しましたね。

でも今日話したいのは僕の午後

元記事を表示

Node.jsのバージョンを切り替えてnode -vしてもバージョンが切り替わっていない!

Node.jsのバージョン切り替えで詰まった話。

バージョンを設定して、確認すると

“`terminal:terminal
$nodebrew use v12.18.2

$nodebrew ls
v10.16.3
v12.4.0
v12.18.2
v14.5.0

current: v12.18.2 // nodebrewでは選択されている
“`

順調っ!

“`terminal:terminal
$node -v
v10.16.3
“`

あれっ?設定されていない?
環境変数PATHに設定されているディレクトリを確認してみる。

“`terminal:terminal
$which node
/usr/local/bin/node ← Systemのnode
“`

* システムのnodeを参照していることが原因だった

## 解決法

環境変数を追加

“`/.bash_profile

export PATH=$HOME/.nodebrew/current/bin:$PATH
“`

“`terminal:terminal
ルートディレクトリにて

元記事を表示

Cloud Firestore で特定の collection のドキュメント全件数を count する方法

# 概要

Cloud Firestore で特定の collection のドキュメント全件数を count するサンプルコードをご紹介します。

# 前提知識: count() クエリは無い

まず、前提として Firestore には `db.collection(“users”).count()` みたいな `count()` クエリはありません。

# 結論: FieldValue.increment(1) を活用する

`count()` クエリが無いため、以下のように `db.collection(“users”)` のドキュメントが増減するタイミングで、ドキュメント全件数を管理する `db.collection(“counters”)` の値を `FieldValue.increment()` で増減させて、これでドキュメント全件数を管理します。

“`js
db.collection(“counters”).doc(“user”).update({ count: FieldValue.increment(1) })
“`

# サンプルコード: 特定 collec

元記事を表示

npm runでCannot find module ‘@babel/compat-data/corejs3-shipped-proposals’のエラー

npm updateで解決。

元記事を表示

【JavaScript 】Node.jsとは

# はじめに
Node.jsとはサーバーサイドのjavascriptのプラットフォーム(実行環境)である。
javascriptは本来クライアントサイドで動作するプログラミング言語だが、Node.jsを使用することでサーバーサイドでもjavascriptが利用できるようになる。

公式サイト、またはOSのパッケージ管理ツールを使用してインストールすることでNode.jsが使用できる。
・[公式サイト](https://nodejs.org/ja/)
・[色々なパッケージ管理ツールでのインストール](https://nodejs.org/ja/download/package-manager/)

#### クライアントサイドとサーバーサイド

? WEBページをブラウザで閲覧する場合の仕組み

“`
1. ブラウザ(クライアント)でURLを指定、サーバーにリクエスト
2. リクエストを受けたサーバーはページを表示するために
必要なhtmlやそれに関連するCSSやjavascriptをブラウザ(クライアント)に返す
3. クライアント側でそれらを受け取ることでWEBページが閲覧で

元記事を表示

CodeCommitにcommit/pushしたらLambda経由でSlackにcommentつき通知を飛ばす

AWS CodeCommit上で管理しているリポジトリに、誰かがcommit/pushしたらSlackで通知を受け取りたいと思って試行錯誤したときのメモになります。Lamda関数はNode.jsで記述しています。

# スクリーンショット

screenshot.jpg

※ アイコンとCodeCommitの太字はSlack Incomming Webhookのカスタマイズで変更しています。

# 前置き

* CodeCommitやLamda、Slackの細かい話は書きません。
* Lamda関数のNode.jsのサンプルコードや注意点だけを書きます。
* 以下はすべてAWS Console上からの操作です。

# 処理の流れ

CodeCommit → トリガー → Lambda → Slack Inco

元記事を表示

爆速! AWS EC2(Amazon Linux)環境でHTTPS環境を建てる方法 (Caddy)

# EC2でHTTPS化するの面倒
HTTPSは人権!
でもEC2環境だと。ロードバランサーやCDNをつけてやるのはお金がかかる!
かといって、Let’s Encryptのコマンド叩きたくない! Nginxを触るのも面倒!
そういうことよくありませんか?

そんなお悩みCaddyなら解決します!

Caddyを使えば、Let’s Encryptの証明書をとってきて、自動でリダイレクトまでやってくれる!
HTTP/2対応! Golangで書かれててなんかすごい気がする!
さああなたも試しましょう!

# 環境
マシン: EC2 t2.micro インスタンス

OS: Amazon Linux (Amazon Linux 2 AMI (HVM), SSD Volume Type – ami-0a1c2ec61571737db)

# How to

ドメインの購入と、EC2のIP固定と、ドメインのAレコードをEC2のIPに向けるのは省略!
あともちろんセキュリティグループの設定で、ポート80と443はパブリックアクセスするのを忘れずに!

できた人は、SSHでEC2に入ります。

その後

元記事を表示

自前ビデオチャットサーバーを立てる

# はじめに
外部につながらないネットワークの中でビデオチャットをしたい

# 参考にしたところ
– http://dslab.work/2019/04/25/post-119/
– https://html5experts.jp/series/webrtc2016/

# nginxを立てる
## 準備
– macにVirtualBoxをインストール
– CentOS7をインストール(minimal)
– ネットワークはブリッジにしておく
– dockerをいれる(https://docs.docker.com/engine/install/centos/)
## テスト
“`
# docker run -d 80:80 nginx
“`
![スクリーンショット 2020-07-01 22.05.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92080/106533b5-bc52-ca49-45cf-fe7745963564.png)

## HTTPSのための証明書を準備する
“`

元記事を表示

scoopでnodeとnpmインストールする方法のメモ

# 今更ながらscoopでnodeとnpmをインストールする方法のまとめ

## scoopインストール
Powershellを管理者権限で起動して以下を実行(細かい説明は省略)

“`powershell:スクリプト実行許可
> Set-ExecutionPolicy RemoteSigned -Scope Process
“`

“`powershell:scoopインストール
> iex (new-object net.webclient).downloadstring(‘https://get.scoop.sh’)
“`

“`powershell:scoopコマンドの確認(Usage出ればOK)
> scoop
“`

## scoopでnvmインストール
scoopでnvmをインストール。`main bucket`にあります

“`powershell:nvmインストール
> scoop install nvm
“`
“`powershell:nvmコマンドの確認(バージョンが出ればOK)
> nvm version
“`

nvmの本体は` C:\U

元記事を表示

Express事始め

# expressをやってみる

expressはnode.jsをいい感じに使えるようにしてくれるフレームワークです。
[https://expressjs.com/ja/](本番)

## hello world
expressはnodeのコアモジュールを拡張しているので、httpモジュールのように書ける。

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

app.get(‘/’, (req, res) => {
res.writeHead(200)
res.write(‘Hello,World’)
res.end()
})
app.listen(3001)
“`

express独自のメソッドを使用して実装するならば、下記。

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

app.get(‘/’, (req, res) => {
res.status(200).send(‘

元記事を表示

【備忘録】 Node.js ( heroku + github )で遊ぶときにやること

# はじめに
遊ぶときにいつも詰まるので、自分用メモとしてまとめる。
遊び始めのハードルを下げるのが目的。
たぶんこれがあれば5分くらいで遊び始められるはず。

## 前提
パスワードは忘れててもリセットすれば良いので、そんなに心配しなくて良い。
ログインメールアドレスすら忘れたとかなら作るしかねぇ。

– [GitHub](https://github.com/)アカウントがある
– [heroku](https://dashboard.heroku.com/)アカウントがある

# 最小構成の構築
## GitHub
**ログインする**
https://github.com/login

**リモートリポジトリを作る**
https://github.com/new
あとで変更できるので、名前はテキトーに決めて始めちゃう。(作ってるうちにイメージが変わっていくことも多いし)
変更したいとき → [Qiita – Githubリポジトリ名変更](https://qiita.com/ntkgcj/items/e4dd5cb04ffd7063bc4e)

## Sourcetree

元記事を表示

Cloud Firestore でサーバーの現在時刻を保存する

# 概要

Firebase の Cloud Firestore でサーバーの現在時刻を保存する方法を調べたので、ご紹介します。

# Firestore でサーバーの現在時刻を保存するサンプルコード

結論としては、 `require(“firebase-admin”).firestore.FieldValue.serverTimestamp()` を利用すれば良いです。

以下、Node.js のサンプルコードです。

“`js
const admin = require(“firebase-admin”);
const db = admin.firestore();
const FieldValue = admin.firestore.FieldValue;

let docRef = db.collection(‘objects’).doc(‘some-id’);

let updateTimestamp = docRef.update({
timestamp: FieldValue.serverTimestamp()
});
“`

以上、Cloud Firestor

元記事を表示

Error ExecJS::RuntimeUnavailable: 発生時の対処法

#発生現象
AWSのEC2でWebサーバ、アプリケーションサーバの設定時に、環境変数の設定をする際の`$ rake secret`を実行した際に下記Errorが発生。

“`terminal:terminal
ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
/var/www/chat-space/config/application.rb:7:in `
/var/www/chat-space/Rakefile:4:in `require_relative’
/var/www/chat-space/Rakefile:4:in `
(See full trace by running task with –trace)
“`
→Javascriptがうまく走っていないので、[Node.js](htt

元記事を表示

Node.jsを使用してWebアプリケーションからAlibaba Cloud Object Storage Serviceにコンテンツをアップロード

このチュートリアルでは、**Node.js**を使って**Webアプリケーション**から**Alibaba Cloud** Object **Storage** Serviceにコンテンツをアップロードする方法を検討します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-use-node-js-to-upload-files-to-alibaba-cloud-object-storage_594077)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#必要条件
このチュートリアルを実行するには、以下のものが必要です。

1、Alibaba Cloud [Object Storage Service](https://www.alibabacloud.com/ja/product/oss)に登録し、秘密のアクセスキーを取得します。
2、マシン上でNode.jsとnpmを実行します。[Node.js Downloads](ht

元記事を表示

AltJS製のNodeモジュールをGitHubから直接インストールすると同時に、そのライブラリのビルドを自動化するpackage.jsonの設定

この投稿では、NodeモジュールをGitHubから直接インストールする際、そのライブラリをインストールのタイミングでビルドする方法を紹介します。

## この手法はどういうときに使うか?

普段、`yarn add ライブラリ名`をすると、npmjs.orgのレジストリにアップロードされたモジュールが、手元のnode_modulesに入ってきます。仮に、ライブラリのソースコードがTypeScriptやBebelなどのAltJSであったとしても、node_modulesにインストールされるのは普通ビルド後のJavaScriptです。これはライブラリ開発者がnpmjs.orgに公開するとき、AltJSからJavaScriptにビルドしたものをアップロードしてくれているからです。

なので、モジュール利用者は、ライブラリのソースコードがもともとどんな言語で書かれているかを気にする必要がありませんし、ましてや、モジュール利用者が`npm install`しするたびに、わざわざライブラリのソースコードからビルドする必要は普通ありません。

### どうしてもソースコードからインストール&ビルド

元記事を表示

OTHERカテゴリの最新記事