- 投稿日:2021-01-19T21:36:40+09:00
node.jsやnodebrewなどをインストールし.bash_profileで設定完了→次の日できなくなってたの巻/Mac OS X 10.15
正確には次の日ではなくターミナル落として再度開いたら、でしたが、、
mac OS 10.15での環境構築のお話です。
nodeやnodebrewをインストールし、bash_profileに環境設定pathを通します。homeの中の「.bash_profile」 ファイルには
export PATH=/usr/local:$PATH export PATH=$HOME/.nodebrew/current/bin:$PATHと記述済み。念のためターミナルでも
export PATH=$HOME/.nodebrew/current/bin:$PATHと実施。
で、ターミナルで
node -v
などを実行してちゃんとバージョンが見れておりました。ーーーーーーーーー
が、時間を開けてもう一度ターミナルを開き、同じ操作をすると
「zsh: command not found: node」となります。export PATH=$HOME/.nodebrew/current/bin:$PATHをターミナルで実行すると動作するため、データは入ってはいるよう。
少しはまりましたが、ターミナルにあるようにシェルが「zsh」というバージョンのため、
.bash_profileに書いたものは無効になってしまいます。
この場合、このファイル名をそのまま.zprofileに名前変更すればうまくいきます!
(またはbashに戻す方法でもよし)macでは、10.15以降デフォルトでシェルがzhsに変更されております。
理由なんかも合わせてさがすと参考にになりました!
https://www.infoq.com/jp/news/2019/07/macos-ditches-bash-for-zsh/
- 投稿日:2021-01-19T20:30:12+09:00
[Node.js]docker-compose upで気楽に開発環境構築
前提
- 筆者はMac環境(試してないがWindowsでも動くと思う)
- dockerコマンドが使える状態
- npmコマンドが使える状態
- nodeコマンドが使える状態
- Dockerの基本的知識(イメージやコンテナの概念)を有する
対象
- 環境構築を手っ取り早くしたい人
- Node.jsをdockerで動かしたい人
環境
bash$ docker -v Docker version 20.10.2, build 2291f61 $ npm -v 6.14.5 $ node -v v13.11.0 $ pwd ~/{project_name}ファイル構成
project{project_name} ├─ node_modules | └─ ... ├─ src | └─ index.js └─ docker-compose.yml └─ Dockerfile └─ package.json └─ package-lock.json
node_modules
の中身は割愛Dockerfileの設定
基本的にはこちらの公式ドキュメント通りにやれば良いが、楽に開発したいたので修正する
{project_name}/DockerfileFROM node:12 # アプリケーションディレクトリを作成する RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Dockerfileが置かれているディレクトリ以下をコピー ADD . /usr/src/app # アプリケーションの依存関係をインストールする COPY package*.json /usr/src/app RUN npm install # 本番用にコードを作成している場合 # RUN npm install --only=production # アプリケーションのソースをバンドルする COPY . /usr/src/app
FROM node:12
:12
の部分はこちらを参考に自身の好きなバージョンで!WORKDIR /usr/src/app
:dockerコンテナの作業ディレクトリを指定
(変更する場合はDockerfileと後に紹介するdocker-compose.ymlに書かれた/usr/src/app
を全て変更する必要あり)docker-compose.ymlの設定
{project_name}/docker-compose.ymlversion: '3' services: app: build: . command: bash -c 'node src/index.js' image: node_test volumes: .:/usr/src/app ports: "8080:8080" tty: true
command: bash -c 'node src/index.js'
:docker-compose up
コマンドでコンテナ起動の際に呼ばれるコマンドimage: node_test
:image名は任意で変更(分かりやすいプロジェクト名とか)volumes: .:/usr/src/app
:ローカルのファイルとdockerコンテナ内のファイルを同期させるports: "8080:8080"
:ローカルとコンテナ両方とも8080番ポートを使用tty: true
:docker-compose up
でコンテナが終了しないようにする(index.jsの設定)
基本的に自身の環境による
以下はこちらの雛形'use strict'; const express = require('express'); // Constants const PORT = 8080; const HOST = '0.0.0.0'; // App const app = express(); app.get('/', (req, res) => { res.send('Hello World'); }); app.listen(PORT, HOST); console.log(`Running on http://${HOST}:${PORT}`);起動
bash$ docker-compose up
Have fun !!
※ イメージができてない場合、コンテナ起動までに時間がかかる
参考文献
- 投稿日:2021-01-19T20:16:57+09:00
Azure IoT Hub に Node.js で subscribe
Ubuntu 20.10 で確認しました。
azure_subscribe.js#! /usr/bin/node // --------------------------------------------------------------- // azure_subscribe.js // // Jan/19/2021 // // --------------------------------------------------------------- 'use strict' const { EventHubConsumerClient } = require("@azure/event-hubs"); const eventHubsCompatibleEndpoint = "sb://ihsuprodkwres017dednamespace.servicebus.windows.net/" const eventHubsCompatiblePath = "iothub-ehub-iot-aa-344012-58f0095d47" const iotHubSasKey = "QThy0z2eiCOzKcv2Ni5DZCnHL8Gtabcdefghd4pj5D4=" const connectionString = `Endpoint=${eventHubsCompatibleEndpoint};EntityPath=${eventHubsCompatiblePath};SharedAccessKeyName=service;SharedAccessKey=${iotHubSasKey}`; var printError = function (err) { console.log(err.message); }; var printMessages = function (messages) { for (const message of messages) { console.log("Telemetry received: "); console.log(JSON.stringify(message.body)); console.log(""); /* console.log("Properties (set by device): "); console.log(JSON.stringify(message.properties)); console.log("System properties (set by IoT Hub): "); console.log(JSON.stringify(message.systemProperties)); console.log(""); */ } }; async function main() { console.log("IoT Hub Quickstarts - Read device to cloud messages."); const clientOptions = { }; const consumerClient = new EventHubConsumerClient("$Default", connectionString, clientOptions); consumerClient.subscribe({ processEvents: printMessages, processError: printError, }); } main().catch((error) => { console.error("Error running sample:", error); }); // ---------------------------------------------------------------必要な値の取得方法
Event Hub-compatible endpoint
az iot hub show --query properties.eventHubEndpoints.events.endpoint --name { your IoT Hub name}Event Hub-compatible name
az iot hub show --query properties.eventHubEndpoints.events.path --name {your IoT Hub name}Primary key for the "service" policy to read messages
az iot hub policy show --name service --query primaryKey --hub-name {your IoT Hub name}Portal にアクセスして、connectionString を読み取ることもできます。
「イベントハブ互換エンドポイント」になります。
実行コマンド
export NODE_PATH=/usr/lib/node_modules ./azure_subscribe.js参考ページ
Hub からテレメトリを読み取る
- 投稿日:2021-01-19T20:12:23+09:00
Express Tour #2 Express application generator
素早くExpressアプリケーションのスケルトンを作るために、express-generatorを使いましょう。
検証環境
lubuntu 20.04
node.js 14.15.3express-generator のインストール
まず下記コマンドでexpress-generatorをグローバルインストールします。
$ npm install -g express-generatorアプリの作成
次にアプリケーション用のディレクトリを作ってそこに移動しましょう。
$ mkdir exg-test $ cd exg-testexpress -h コマンドを打つと各オプションについて確認できます。
$ express -h実行結果
Usage: express [options] [dir] Options: --version output the version number -e, --ejs add ejs engine support --pug add pug engine support --hbs add handlebars engine support -H, --hogan add hogan.js engine support -v, --view <engine> add view <engine> support (dust|ejs|hbs|hjs|jade|pug|twig|vash) (defaults to jade) --no-view use static html instead of view engine -c, --css <engine> add stylesheet <engine> support (less|stylus|compass|sass) (defaults to plain css) --git add .gitignore -f, --force force on non-empty directory -h, --help output usage informationデフォルトではviewエンジンとしてJadeがインストールされるのでJadeを使いたくない方はオプションを指定してあげる必要があります。
(cssのデフォルトは普通のcssです。)例として、viewエンジンにEJS, stylesheetエンジンにsassを指定したい場合は以下のコマンドで作成します。
$ express --view=ejs --css=sass以下のような構成でアプリが作成されます。
./ ../ app.js bin/ package.json public/ routes/ views/依存関係のインストール
npm install で依存関係のあるライブラリをインストールします。
$ npm installアプリの起動
以下のコマンドを打つと htttp://localhost:3000/ でアプリが起動します。
$ npm start参考
- 投稿日:2021-01-19T01:59:49+09:00
Node.jsをWindows10にインストールして詰まったこと
背景
AWSでNode.jsを触ってみようと思い立ち、まずはAWSの開発者ガイドに従って開発環境を構築してみた。
参考にしたURL
https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/nodejs-devenv.html
https://qiita.com/taiponrock/items/9001ae194571feb63a5e詰まったこと
Node.js&npmをインストールしたので、動作確認(npm start)するとエラーが出てしまった。
node:internal/modules/cjs/loader:928 throw err; Error: Cannot find module 'http-errors' Require stack: - hoge\app.js - hoge\bin\wwwエラーの出た環境
OS:Windows10 Pro(バージョン2004 OSビルド19041.746)
node.jsインストーラ:node-v15.6.0-x64.msi調べてみた
どうも、Node.jsのインストールは一発目は失敗することが多い模様。(Windowsだから?)
参考にしたURL
https://github.com/nodejs/help/issues/2644
https://qiita.com/Sakuya_wd/questions/9d2af3b47047aad652fc確認してみた
同じようなトラブルに見舞われているところでは、node_modulesフォルダを消して再インストールするという解決策が提示されていた。
まず、インストールフォルダを確認したところ、自分の環境ではnode_modulesフォルダが存在していなかった。やってみた
node_modulesフォルダがもうないんだから、そのまま再インストールをやってみる。
npm install
警告は出るけど、エラーは出てないっぽいから、改めて動作確認をした。
npm start
> node-express@0.0.0 start > node ./bin/www GET / 200 1701.982 ms - 170 GET /stylesheets/style.css 200 9.003 ms - 111 GET /favicon.ico 404 33.771 ms - 1132今度はちゃんとサンプルコードが動いた。
インストーラーからだとモジュール類がちゃんと入らないってことなのかな?