標準入力から読み込みたい時に
確認環境
| Env | Ver |
|---|---|
| Node.js | 20.11.0 |
サンプルコード
/dev/stdinが存在するPOSIX系のシステム限定だと思われる。UbuntuとFreeBSDでは動いた。
const { readFileSync } = require('node:fs');
const stdIn = readFileSync('/dev/stdin', 'utf8');
console.log(stdIn);
サーバーサイドでMarkedを使いたかったので。Node.js 20系はさくらのレンサバに入っているC++やclangのバージョンが古い関係でエラーになると思われるので、さくらの環境でもビルドが成り立ちそうな18系にした
所要時間はさくらのレンタルサーバースタンダードプランで2時間丁度くらい
wget git.io/nodebrew
.zshrcにパスを通す
PATH=${HOME}/.nodebrew/current/bin:${PATH}perl nodebrew setup
## バージョン確認
# nodebrew ls-remote
## プロセスが殺されるのを防ぐためにniceで優先度を下げている
## コンパイルには2h程かかる
nice -n 20 nodebrew compile v18.19.0
nodebrew use v18.19.0
niceが効かないのでプロセスキルされて終わる
OpenSSL周りに何か問題があるらしくコンパイルがこける。バージョンが合ってないのかも
# OpenSSL
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=/home/$USERNAME/openssl --openssldir=/home/$USERNAME/local/openssl
make
make install
# Node.js
wget https://nodejs.org/dist/v18.9.1/node-v18.9.1.tar.gz
tar -zxvf node-v18.9.1.tar.gz
cd node-v18.9.1
./configure --shared-openssl --shared-openssl-includes=/home/$USERNAME/openssl/include/
export LD_LIBRARY_PATH=/home/$USERNAME/openssl/lib
make install DESTDIR=/home/$USERNAME/local PREFIX=
Node.jsなので負荷が心配だったが、Markedでブログ記事をMarkdownからHTMLに落とす程度なら問題なく動いて安心した。
EdgeとChromeは同じだったがNode.jsでは異なる挙動をしていたのでそのメモ
| Env | ver |
|---|---|
| Microsoft Edge | 120.0.2210.9 |
| Google Chrome | 120.0.6099.130 |
| Node.js | 20.0.0 |
DevToolsで確認
const err = new Error('test');
Object.getPrototypeOf(err);
// {name: 'Error', message: '', constructor: ƒ, toString: ƒ}
DevToolsで確認
const err = new Error('test');
Object.getPrototypeOf(err);
// {name: 'Error', message: '', constructor: ƒ, toString: ƒ}
node -iで確認
const err = new Error('test');
Object.getPrototypeOf(err);
// {}