2
Help us understand the problem. What are the problem?

posted at

updated at

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

発端

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

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

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

 が! PC版(Win版)が動きません・・・
 (Win版とゆう言い方は、なでしこv1に対しても使われますが、ここではv3のWindows用オールインワンパッケージ「nadesiko3win32」を指しています。PC版(Node版)とゆう言い方だと、他のOS同様npmインストールも可能なので区別のため)

なでしこさんではなく、Node.jsのせいなんです

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

対処法

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

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

SET NODE_SKIP_PLATFORM_CHECK=1

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

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

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

できました!

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

起動メニュー.jpg

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

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

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

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

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

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

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

最新のNode.jsをインストールする

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

 しょうがないので、zipでダウンロードしてきます。→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

 OKです。設定したとうり+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:

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
2
Help us understand the problem. What are the problem?