日本語で親切なサイトがヒットしたのを見たが、丁寧でよかったぞ。なんでアタシのこれをあえて読む意味はないと思う。
このシリーズで、「ブラウザを使わずにテスト」のために node.js を使っている、と書いた。ただ jQuery とかまでなってくると「出来るだろうけど色々違うだろうな、特に window なんてないんだから」と思って後回しにしてた。けどさすがにアプリケーションが大きくなってきたので jQuery 部分もブラウザ使わずにテスト出来たらいいなぁ、と。
ポイントは「ワタシにとっては」3つだけだった:
- npm でインストールされるモジュールは「最新」なので node.js も最新にしような
npm --global
でモジュールインストールして使うつもりならNODE_PATH
設定を忘れずにな- jQuery は「window」を前提とするのよ
1. で落っこちるモジュールがあった。これはスクリプトそのもののバージョンが違うてことだろうか、Syntax Error になるモジュールがあった。だってアタシが使ってたの、5.0 だもん、古過ぎ。(本日時点で最新は 9.4)。
2. は Windows7 で hhsprings で MSYS なワタシの場合は
1 [me@host: ~]$ export NODE_PATH='C:/Users/hhsprings/AppData/Roaming/npm/node_modules'
みたいな。
3. は、なので「jquery」とともに「jsdom」もインストールの上でこんななの:
1 const jsdom = require("jsdom");
2 const dom = new jsdom.JSDOM(`<!DOCTYPE html>`);
3 var $ = jQuery = require("jquery")(dom.window);
var $ = jQuery =
みたいな名前解決は、ブラウザで使う方のコードでどう書いてるかによってご自由に。
一応最初に挙げた日本語サイトでなく StackOverflow に答えがほとんどあったし、ハマってる最中も「どうせモジュール検索パスの問題だよな」と思いながら苦しんでるんで、まぁ「完全に想定の範囲内のどツボ」。大したことはない(半泣きで)。