node」カテゴリーアーカイブ

fnm install で os error 5 になる

ちょっと試してみたいことがあって、node.jsの古いバージョンを入れることに。

あまりバージョンをいじることがないんだけど、ローカル環境のバージョンマネージャ何を使っていたんだっけ。。。と考えてfnmを使っていることを思い出した。

fnm
https://github.com/Schniz/fnm

fnmを選んだ当初はそれほど意識はしていなかったんだけど、考えてみるとこれ、RUSTで書かれているんだよな、と。
RUSTはRUSTで元C++エンジニアとしてはいじってみたくなるんだけど、どこで使ったものかということで二の足を踏んでいるんだよな。

閑話休題

さて、目的のfnmを使ってinstallを試みたのだが

> fnm install 14.18.2
Installing Node v14.18.2 (x64)
error: Can't download the requested binary: アクセスが拒否されました。 (os error 5)

あれ?エラーになった

管理者権限はついているので問題はないはずなんだけど?ということで調べてみると、fnmではないけど似た事例が

Thank you for generating this report. It does look to me like a probable anti-virus problem.

fresh install fails on Windows: “error: could not rename component file from ‘… \rust-docs\share/doc/rust/html’ …” #1912
https://github.com/rust-lang/rustup/issues/1912

んー。AntiVirus?

ということで、手元のカスペルスキーを一時停止してみると

>fnm install 14.18.2
Installing Node v14.18.2 (x64)

>node -v
v18.1.0

>fnm use 14.18.2
Using Node v14.18.2

>node -v
v14.18.2

ということで問題なくインストールできました。

参照した先もRustのページだったので、Windows+Rust+ダウンロード処理でアンチウィルスのリアルタイムスキャンが影響を受けているということなんだろうか?

ぐぬぬ。先が思いやられる

Deno Fresh環境の構築とチュートリアル

少し前になるが、DenoにおけるフロントエンドWeb開発フレームワークとしてFreshがリリースされている

https://fresh.deno.dev/

今月のWEB+DB Press の裏表紙を見たら、Denoが広告を打っていて超びっくりした

せっかくなのでさわりとして、いくつかの情報をまとめた

Denoとは

Node.js の作者であるライアン・ダール氏によって作成された、Node.jsにおける反省点を踏まえて作られたJavaScript 及び TypeScript のランタイム環境

Node.js環境下では、TypeScriptはトランスパイラを通したりビルドしたりする必要があるがDenoはTypeScriptをそのまま実行することができるようになります。

特にNode.jsと比較して強化されているのはセキュリティ周りです。
Denoはデフォルトでサンドボックス内で動作する形を取っているため、明示的にアクセスを許可してあげないとファイルシステムなどへのアクセスの確認が頻発したりします。

Fresh

TypeScriptのランタイム環境としてのDenoは、それはそれでTypeScript使いに取ってはいいものに見えましたが、Webフロントエンド開発は別に用意する必要がありました。

ところが、今年の7月にDeno用のフルスタックWebフレームワークとしてFreshをリリースしました

ちなみに、8/16現在でバージョンは1.0.2
できたてホヤホヤですな

Freshの特徴としては Islands Architecture を採用しており極力SSRで処理を行う形でクライアント側でのJavaScript配信を行わないような思想のようです

Islands Architecture
https://www.patterns.dev/posts/islands-architecture/

環境構築とチュートリアル

せっかくなので環境はDockerを使ってやろうと。
このあたりは、あちこち参考にさせていただきながらやっているのでツッコミどころは満載かも知れないが、誰かの役に立てればと思いDockerFileを公開する

FROM debian:stable-slim

WORKDIR /var/www/html

RUN apt-get -qq update \
  && apt-get -qq -y install curl zip unzip \
  && curl -fsSL https://deno.land/x/install/install.sh | sh \
  && apt-get -qq remove curl zip unzip \
  && apt-get -qq remove --purge -y curl zip unzip \
  && apt-get -qq -y autoremove \
  && apt-get -qq clean \
  && echo 'export DENO_INSTALL="/root/.deno"' >> ~/.bash_profile \
  && echo 'export PATH="$DENO_INSTALL/bin:$PATH"' >> ~/.bash_profile

CMD ["/bin/bash", "-c", "source ~/.bash_profile && bash"]

チュートリアルに関しては公式を参照

Getting Started
https://fresh.deno.dev/docs/getting-started

Denoでは、Deploy先としてDeno Deployというエッジ環境を提供してくれているので、Githubと連携させたりしてPush=Deployの環境の構築も簡単にできた。

チュートリアルがうまくいかない?

Deno の Web フレームワーク Fresh チュートリアル
https://zenn.dev/azukiazusa/articles/fresh-tutorial

チュートリアルを用意してくれている人もいたので、こちらもやってみた。
ただ、スタイルの適用が何故かうまく行ってくれずに困っている

https://krote–ample-resh.deno.dev/blog

このあたり、フロントエンド開発はからっきしなので、ちょっと詰まってしまったなぁ。
開発者ツールで見る限りでは、想定した通りのclassが割り当てられているようにみえるんだけど。。。

まだまだですねぇ
教えて、偉い人。

expressプロジェクトの作り方がいつの間にか変わっていた

ちょこちょことnode.js周りをいじっているのですが、なにぶん行き当たりばったりなもので、
少し勉強しようと買って放置してしまっていたKindle本を読み返してます

Nodeクックブック
Nodeクックブック

posted with amazlet at 14.05.31
David Mark Clements
オライリージャパン
売り上げランキング: 356,390

これまでは大抵、expressを利用してきたので、久々にレシピにそって作ってみようと思ったのですが。。。

$ express profiler
-bash: express: command not found

あれ?以前は普通にこれでプロジェクトが作れたはずなんだけど・・・。
クックブックにもそう書いてあるし。
はて???

と、公式を見てみたら

$ npm install -g express-generator

と書いてあり、これまでの express をインストールしてexpressコマンドを叩くのではなく、
express-generator をインストールする必要があるみたい。

というか、どちらかというと公式の書き方を見る限りでは、express コマンド叩くと言うよりは
package.json に記述して npm install 叩く事を推奨しているのかな?