Windows7でNode.js v14以上を動かしたい！　あるいは、なでしこ３PC版 v3.3.3を使いたい！！！

# 発端
　なでしこ３は近頃、**ESModule化した次期バージョン**が発表されました☆

https://nadesi.com/top/

　まだテスト版とゆうことですが、早速使ってみなくては！

　web版についてはベツに問題ありません。
　しかも、v3.3.3で、HTML埋め込みでも「取り込む」文が使えるようになり、別ファイルのなでしこプログラムをライブラリとして使えるようになったので、[Javascript代わりに使う](https://qiita.com/kujirahand/items/a9ac3145a8d535a372dc)ことの利便性が飛躍的に向上し、現実的になりました～:heart_eyes:

　が！　PC版(Win版)が動きません・・・
　（Win版とゆう言い方は、なでしこｖ１に対しても使われますが、ここではｖ３の[Windows用オールインワンパッケージ「nadesiko3win32」](https://nadesi.com/doc3/index.php?Windows%2FDownload)を指しています。PC版(Node版)とゆう言い方だと、他のＯＳ同様npmインストールも可能なので区別のため）

## なでしこさんではなく、Node.jsのせいなんです
　そもそも論として、Node.jsは13系の途中辺りでWindows7のサポートが打ち切られちゃっているんですよねぇ～。
　nadesiko3win32では、v3.1.21辺りからバンドルされてるNode.jsが14系になり、一瞬コマンドプロンプトが表示されるだけで消えてしまい、起動しなくなっちゃったんです。
　でも、大丈夫！
　`nodejs`フォルダをまるっとNode.js v13のものに差し替えてしまえばＯＫ☆　それでちゃんと動いてました。
　 v3.2.51では16系に変わりましたが、大丈夫でした。
　 でも・・・v3.3.3は、ダメだったんですぅ・・・:sob:

# 対処法
　対処法？　そりゃあなた、とっととwinのばーじょんをこそどうにかするべきなんでしょうともさ。知ってますよ、スミマセンスミマセン、Node.jsではなくウチのPCのせい、もといワタシのせいなんですぅ～。
　でも、色々調べた結果、実は動くことは動くラシイことが判明☆

https://nodejs.org/docs/latest-v16.x/api/cli.html#node_skip_platform_checkvalue

　英語です。ツラみ:cry:
　しかし、ともかく、`NODE_SKIP_PLATFORM_CHECK`とゆう環境変数に`1`をセットするだけ！
　プラ​​ットフォームのチェックをスキップするとゆうことですね☆
　とりあえず、こんな感じ？

```
SET NODE_SKIP_PLATFORM_CHECK=1
```

　今回からメニューが出来たことにより、`nako3server.vbs`と`nako3edit.vbs`はトップから`setup`フォルダの中に入ったみたいね。
　`/d`はcdコマンドでドライブ変更も一緒に行うオプション。

```
cd /d D:\nadesiko3win32-3.3.3\setup
nako3edit
```

　開いた！
　うまく行ったので、ちゃんと環境変数登録して完了☆

## できました！

　今バージョンから、`start.exe`でエディタの起動メニューが出るようになりました！
　前は、起動してみないとどっちがどっちだか分かんなくなりがちだったのでイイ感じです☆

![起動メニュー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561177/a3d27b9c-3edd-37a1-2157-49d6e4c1238f.jpeg)

　まあ、このメニューだけは最初から出ていたんですけれどね。
　問題は、エディタです。
　無事にメニューから両方とも開くことができるようになりました～:tada:
　やったね！！！

# 折角なのでグローバルにも

　予想はしてましたが、そのままnpmでnadesiko3をアップデートしようとしても、アンインストールしてもっかい１からインストールしようとしても、エラーで真っ赤になってインストール出来ません。

```
#---メモ---
# なでしこさんをグローバルインストールする
npm install -g nadesiko3

# アップデートする
npm update -g nadesiko3

# アンインストールする
npm uninstall -g nadesiko3
```

　やっぱりnode.jsのバージョンが足りない的な？（例によってちゃんと読まずにギャーと言って画面閉じてしまいました・・・；）

## 最新のNode.jsをインストールする
　しかし、node.jsも、npmでアップデートできないのはもちろん、インストーラーは即エラーを出してインストール拒否られます。
　さっきの環境変数はあくまでもnode.js実行時の時だけのものなんですね。
　インストール時の、なんかチェックをスキップする的なオプションみたいなのはないのだろうか・・・

　しょうがないので、[zipでダウンロード](https://nodejs.org/ja/download/)してきます。→`Windows Binary (.zip)`
　解凍した中身を、元の場所（Program Files\nodejs）に、まるっと上書き。（元のとこじゃないトコにする場合は、パスを通す）

```
node -v
　→v16.15.0 (2022/2/27現在)
```

　できました☆
　が！　npmが出来ません。
　気付いていたけど、途中で管理者権限がうんたらと言われていたんでした。
　どうやら`npm`のフォルダだけ、権限が無いと上書きできないっぽい（？）
　権限を付与してやりなおし。

```
npm -v
　→8.5.5 (2022/2/27現在)
```

　出来ました☆

### できない！

　これで出来るかと思ったら、やっぱりインストール出来ない。
　エラーの内容は、変わったっぽい（相変わらずよく読んでいない；）
　でもなんか、フォルダが作れない的なコトっぽい？　権限がない？？
　どうやら、インストーラーでNode.jsをインストールした場合には、グローバルインストールする先が`C:\Users\(ユーザー名)\AppData\Roaming\npm\node_modules`になるんだけど、zip解凍した場合には、`npm.cmd`があるトコの`node_modules`フォルダになるってことラシイ。
　えー、上書きしたらもろもろそのまま引き継げるかと思ったんだけど・・・こんなことならムリにProgram Filesになんかぶち込むんじゃなかったよ＞＜


## グローバルインストール先を変える

　これで、変えれるらしい。

```
npm config set prefix "C:\Users\(ユーザー名)\AppData\Roaming\npm"
```

　確認。

```
# グローバルインストールでインストールされる場所
npm root -g
　→C:\Users\(ユーザー名)\AppData\Roaming\npm\node_modules
```

　ＯＫです。設定したとうり＋node_modulesの表示に☆
　そしてようやく無事に、なでしこさんのインストールも出来ました！
　が・・・！！

```
cnako3 -v
```

　できない！
　cnako3がないって言われる！
　なんでだ。ぐろーばるじゃないのか・・・？

```
# npmがグローバルで使用している場所
npm bin -g
　→C:\Users\(ユーザー名)\AppData\Roaming\npm
```

　さっきprefixをセットしたトコ。場所はあってるんですが、パスが通ってないって言ってる！
　グローバルインストールしたヤツは、ここにsymlinkが貼られて実行されるってコトらしい。そして、インストーラーを使うと環境変数もちゃんと良きように設定してくれるけど、zip解凍だとされないので自分でパスを通さなきゃいけないラシイ。
　まって、上書きしただけなのに、環境変数の設定までクリアされちゃうってなんでよ。　
　そんなこんなで・・・

## できました！
```
cnako3 -v
　→3.3.3 (2022/2/27現在)
```

　できました！！　やったね:confetti_ball:

### 前作ったヤツも動いた

　とりあえず前に遊んでいたラインボットなどをローカルでお試ししてみたのは無事動きました。
　よかった☆
　ただし、拡張プラグインの取り込みをしている場合、以前は、

```
!「plugin_express.js」を取り込む。
```

　みたいな感じでしたが、ESM化でプラグインの拡張子が全部`mjs`に変わっていて、

```
!「plugin_express.mjs」を取り込む。
```

　に直さなきゃいけませんでした。以前は出来た拡張子の省略もダメみたいね。

# おわります

　今回の手順は、試行錯誤の末、とりあえずウチで出来るようになったってだけなので、ワタシ的には色々と賢くなった気がしますが、コレが本当に正解かは分かりません。
　上書きせず別途任意の場所に解凍して、必要なパスを通すの方が明らかに良かったような気はします。
　あと私はなでしこさんのためだけにnode.jsを入れているので、いつでもどこからでもcnako3でなでしこさんのプログラムを起動したくグローバルにこだわりましたが、保証外の最新版は必要に応じて別途使うの方が良いのかもね。
　ってゆうかwin7でなければいい話；

　今日の学び。

- 上書きは良くない。
- Program Filesに突っ込むの良くない。
- ってゆうかwin7良くない。
- なでしこさんは良い:heart: