- 1. Windowsでnodejsの環境構築【安定感抜群】
- 2. Node 18 に Test Runner なるものがあったので試してみた(Experimental)
- 3. Node.js: GitLab API の使い方
- 4. anyenvからnodenvでnodeインストールまで
- 5. 【TypeScript】 ts-node で Unknown file extension ".ts" エラーが出るとき
- 6. Lambdaで、現在日時と特定の日付を容易に比較する (Node.js)
- 7. viteを使ってみようと思ったら最初から詰まった
- 8. Scratch 3.0(公式)などで独自拡張機能を使わない外部との通信【ソースコード編】(ブラウザの開発者ツールのコンソール、JavaScript、WebSocket が関連)
- 9. Python の input( ) と同様の挙動を JavaScript, Node.js で再現する
- 10. Node16 + Cloud Functions をDocker環境に構築
- 11. MPD管理下の曲をコマンドで操作する。(またはWEB操作、GoogleHomeで操作)
- 12. #Scratch 3.0(公式)などで独自拡張機能を使わない外部との通信【概要編】(ブラウザの開発者ツールのコンソール、JavaScript、WebSocket が関連、 #toio でも利用可)
- 13. HerokuでGoogle認証情報・環境変数を扱う方法
- 14. CloudFunctionsのデプロイエラーの対処方法 error fetching storage source: generic::unknown: retry budget exhausted (3 attempts): fetching gcs source: unpacking source from gcs: source fetch container exited with non-zero status: 2
- 15. JavaScriptでAzure Table Storageを操作する
- 16. Node.jsで「Error: getaddrinfo EMFILE」というエラーが出る
- 17. ESP32をActions on Google Homeの音楽プレイヤにする
- 18. win11にしたらエイリアスが使えなくなった。error: `fnm env` was not applied in this context. Can't find fnm's environment variables
- 19. EC2内にexpressで立ち上げたサーバーへALPを介して接続する
- 20. AWS Lambda HTTP APIでPOSTデータを取得・デコードする関数(関数URL対応)
Windowsでnodejsの環境構築【安定感抜群】
# あらすじ
Windowsのローカル環境でnodejsを使って開発を行いたいときのベストプラクティスを紹介します。
dockerやWSLを使うのが理想ですが、「マシンスペック的にVMを起動すること自体がおっくうな場合」もしくは、「Windows Server Core などを本番環境に使用する予定」などのための記事とします。
::: note info
2022年4月現在の最新情報です。
:::# 前提
下記ソフトウェアがインストール済みとします。
– Windows 10 or Later
– Powershell 7 or Later::: note warn
もし、他のnodejs用のバージョン完了ツールや、nodejs公式のインストーラーを使用したインストールが行われている場合、事前に全て消しましょう。特に、環境変数は厄介なので、慎重に確認して消しましょう。筆者は、ProgramFilesが2個あることに気が付かず時間を無駄にしました。
:::# やること
やることは、下記の通りです。
– `nvm`のインストール
– `node`のインストール
–
Node 18 に Test Runner なるものがあったので試してみた(Experimental)
Devon Govett さんのツイートに「おおっ!?」となったので Test Runner を試してみました。
Whoa, just found out that Node has a builtin testing framework now! ? https://t.co/JZhtIDMzS7 pic.twitter.com/JLGGhDl5oi
— Devon Govett (@devongovett) May 5, 2022
構成の話などは、「[【概要編】の記事](https://qiita.com/youtoy/items/db6d34a9985eb182042f)」をご参照ください。
## 準備手順
この後に、いくつかのプログラムのソースコード等が出てくるのですが、それらをどのような順番で動作させていく
Python の input( ) と同様の挙動を JavaScript, Node.js で再現する
私と同じ悩みを持つ方のために、共有させていただきます。
以下のQAにてご指導頂いた内容ですので、経緯等は以下のページを参照ください。https://qiita.com/watanabe-tsubasa/questions/07131f97fa0a48897ab2#answer-7d6b619e11e5876f6023
## 動作
実行すると数字1を聞かれます(今回は10を入力)。
入力すると数字2を聞かれます(今回は20を入力)。
Node16 + Cloud Functions をDocker環境に構築
# はじめに
Cloud Functionsをデプロイするまでの環境をDockerで構築する。今回は環境構築が簡単に済む Node.js を選択した。
公式より Node.js 16(推奨)とあるので(2022/05/01)バージョンは Node.js 16 選択した。https://cloud.google.com/functions/docs/concepts/nodejs-runtime?hl=ja
# 概要
### 前提条件
* GCPにプロジェクトが存在し、Cloud Functions使用できる状態になっている
* Docker Desktopを使用### 手順
1. docker-composeを使用してコンテナを作成する
2. firebase-toolsを使用して初期設定
3. Cloud Functionsにデプロイする# Docker環境構築
imageは node:16-alpine を使用し、firebase-toolsをインストールする。
```:Dockerfile
FROM node:16-alpineENV APP_HOME /app
MPD管理下の曲をコマンドで操作する。(またはWEB操作、GoogleHomeで操作)
#はじめに
●MPD管理下の曲をコマンドで操作する。
WEB操作、GoogleHome操作は下記の記事を参考に修正してください。
[WSLのUbuntuでPC内の音楽データをGoogleHomeで操作する](https://qiita.com/kobbeko/items/04954bc47e407c07d9e7)
[WSLのUbuntu環境でPC内音楽データをWeb操作する(おまけでyoutube音楽とGooglehomeで伝言)](https://qiita.com/kobbeko/items/f4d47c817309bda1e56c)#環境
●WSLのUbuntu環境で構築しています。ラズパイでも問題ありません。
●mpd,mpc,mplayerをインストールする#PC内音楽データを再生するプログラム(pc2play.js)
●単体で起動する方法
$node pc2play.js 松田聖子&赤いスイートピー(artist&title)const exec = require('child_process').exec;
//値取得
cons
#Scratch 3.0(公式)などで独自拡張機能を使わない外部との通信【概要編】(ブラウザの開発者ツールのコンソール、JavaScript、WebSocket が関連、 #toio でも利用可)
デフォルトでは外部と自由に通信をする機能がない
「公式版の Scratch( https://scratch.mit.edu/ )」
や、
「toio Do( https://toio.github.io/toio-visual-programming/beta/?category=do )」
を、以下のようにリアルタイム通信で連動させることができたりする仕組みの話を、この記事で取り扱います。詳細は続きの記事で書こうと思っていて、今回は概要を記事化してみます。公式版 #Scratch (https://t.co/0fqczChNyX)で作成したプロジェクトと、公式の #toioDo で作成したプロジェクトの間をつないでシンクロさせる(ちょっと遅延が発生しますが...)、
という少し変わった試作をやってみました。思いつきで作ってみたネタです。#toio pic.twitter.com/guFrSSHScO
— you (@youtoy) May 3, 2022
今回の仕組みに関係してくる主なキーワードは、以下のとおりです。
- ブラウザの開発者ツール(の中のコンソール)
- JavaScript(Node.js を使うもの、ブラウザ上で動かすバージョン)
- リアルタイム通信(WebSocket のサーバー・クライアント)ちなみに、1つ前に書いていた以下の記事の内容も、今回の話に少し関連していたりします。
●#Scratch 3.0 のキー入力イベントをブラウザの
HerokuでGoogle認証情報・環境変数を扱う方法
# HerokuでGoogle認証情報・環境変数を扱う
## 前置き
通常ローカル開発環境では.envファイルにkey:valueペアの定数を定義したり、Google APIの認証情報をJSONファイルに保持していたりするが、HerokuなどのPaaSでGithubリポジトリ連携する場合、資格情報を公開しない状態でアプリ側で扱えるようにする必要がある。Google資格情報のJSONファイルの一例:
![gcredentials_hidden.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2395846/7955b169-1fcc-9a17-4adc-4df7c327017c.png)```bash
$ heroku config:set GOOGLE_CREDENTIALS="$(< /home/charles/Programs/heroku/google-credentials.json)" --app "myapp" ``` ## Herokuでの確認 のSettingsタブ > Con
CloudFunctionsのデプロイエラーの対処方法 error fetching storage source: generic::unknown: retry budget exhausted (3 attempts): fetching gcs source: unpacking source from gcs: source fetch container exited with non-zero status: 2
こんにちは。[virapture株式会社](https://virapture.com)の[もぐめっと](https://mogmet.com)です。
本日はCloudFunctionsのトラブルシューティング記事になります。
結論から言うとnodeのバージョンを変えよう!というお話になります。
## 問題の発生
ある日M1 macの環境でCloudFunctionsをデプロイしようとしたら下記エラーでデプロイができませんでした。
```
functions[onCreate(asia-northeast1)]: Deployment error.
Build failed: Build error details not available.Please check the logs at https://console.cloud.google.com/cloud-build/builds;region=asia-northeast1/xxx-xxx-xxx-xxx-xxx?project=xxx. Please visit https://cloud.google.com
JavaScriptでAzure Table Storageを操作する
JavaScriptでAzure Table Storageを使用するには、2022年5月現在、[**@azure/data-tables**](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/tables/data-tables)というライブラリを使用します。(従来は、[**azure-storage**](https://github.com/Azure/azure-storage-node)というライブラリを使用していましたが、現在は非推奨となっています。)
# 利用可能な環境
[GitHub](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/tables/data-tables#prerequisites)には、
> Currently supported environments:
> * LTS versions of Node.js
> * Latest versions of Safari, Chrome, Edge and Firefo
Node.jsで「Error: getaddrinfo EMFILE」というエラーが出る
Docker上でNode.js + Nuxt.js + log4js-nodeで開発したアプリケーションを稼働したときの障害に対してどのように原因追求したかの記録
# 事象
Docker上にNode.js + Nuxt.js + log4js-nodeで構築したフロントエンドアプリとバックエンドアプリの間のHTTP通信が稼働2~4週間後に通信不能となった。![Qiita_SystemPlatfrom.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793264/f961e197-1be5-3073-e60f-c72869e7f320.png)
スタックトレースとしは、下記を得ている。
```text:Stack traces
[ERROR] Error: getaddrinfo EMFILE backend-service
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:72:26) {
errno: -24,
c
ESP32をActions on Google Homeの音楽プレイヤにする
M5Core2を「OK Google」から操作できる音楽プレイヤにします。
Google Smart Homeのデバイスタイプ「メディアリモコン」を実装します。
また、応答速度を速めるために、ローカルフルフィルメントに対応させます。もろもろのソースコードは以下にあります。
poruruba/MusicSmartHome_Google
https://github.com/poruruba/MusicSmartHome_Google
全体的な流れを示します。
まずは、セットアップ時です。ユーザが、スマホのGoogleのHomeアプリから、デバイスのセットアップをするときのフローです。
ちなみに、後述する自作のスマートホームサーバの登録は済んでいる前提です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261826/231dd5b8-b669-04b9-33c9-dec6683db84a.png)
①セットアップ開始
GoogleのHomeアプリから、デバイスのセットアップ
win11にしたらエイリアスが使えなくなった。error: `fnm env` was not applied in this context. Can't find fnm's environment variables
win11にしたら急に登録してたエイリアスが使えなくなった。
原因は、パワーシェルが読み込むファイルのパスが変わったかららしい。
上記コマンドを実行するとパワーシェル立ち上げ時にどこのファイル読み込んでいるかわかる
> $Profilewin10だと
%HOMEPATH%/Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1
win11だと
%HOMEPATH%/Documents/PowerShell/Microsoft.PowerShell_profile.ps1
になる。fnmをinstallして使おうと思ったらこのエラーが出た。
Microsoft.PowerShell_profile.ps1にenvの設定してるのにずっと
error: `fnm env` was not applied in this context. Can't find fnm's environment variables
って出るから、えってなってた。
こういうの気づきにくいからマジやめれ。。
EC2内にexpressで立ち上げたサーバーへALPを介して接続する
## ec2内にローカルサーバーを立ち上げる
まずはnode.jsとnpmをインストールします。
[公式の手順](https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html)を参照してさくっと完了。
一応コマンドで確認しておきます。
```
node -v
npm -v
```適当なディレクトリを作成し、expressをインストール。サーバ用jsファイルも作成します。
```
mkdir sample
npm i express
vi index.js
`````` server.js
const express = require('express');
const app = express();app.get('/', (req, res) => {
res.send('Hello');
});app.listen(3000, () => console.log("Server started
AWS Lambda HTTP APIでPOSTデータを取得・デコードする関数(関数URL対応)
## HTTP APIや関数URLでもPOSTデータを受け取りたい
手軽に実装できてお財布にも優しいHTTP APIですが、POSTデータを受け取るのに一手間必要です。
リクエストbodyはbase64エンコードされた状態で取得できるため、 デコード & jsonパースしてあげる関数を使えばOKです。## コード
### Node.js
```getBodyOnLambda.js
function getBodyOnLambda(event_body) {
let body_string_utf8 = Buffer.from(event_body, 'base64').toString('utf-8');
//日本語が含まれる場合はdecodeURIする
//decodeURIComponentでは無くdecodeURIなのは、POSTされたデータの中に&が含まれているとJSON変換時にうまくいかないため
body_string_utf8 = decodeURI(body_string_utf8);
//パラメーター形式文字列のJSONへの変