node.js で jQuery (ほかにいいサイトあるのであえて読まなくていいよ)

日本語で親切なサイトがヒットしたのを見たが、丁寧でよかったぞ。なんでアタシのこれをあえて読む意味はないと思う。

このシリーズで、「ブラウザを使わずにテスト」のために node.js を使っている、と書いた。ただ jQuery とかまでなってくると「出来るだろうけど色々違うだろうな、特に window なんてないんだから」と思って後回しにしてた。けどさすがにアプリケーションが大きくなってきたので jQuery 部分もブラウザ使わずにテスト出来たらいいなぁ、と。

ポイントは「ワタシにとっては」3つだけだった:

  1. npm でインストールされるモジュールは「最新」なので node.js も最新にしような
  2. npm --global でモジュールインストールして使うつもりなら NODE_PATH 設定を忘れずにな
  3. 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 に答えがほとんどあったし、ハマってる最中も「どうせモジュール検索パスの問題だよな」と思いながら苦しんでるんで、まぁ「完全に想定の範囲内のどツボ」。大したことはない(半泣きで)。