書かれているとおり、 require('jsdom') したファイルから、モジュールが見えてないんだと思いますが、コード見ないと何とも言えません。
ソース片(公開出来ないなら、再現する別のもの)でもいいんで、見せていただけるとわかると思います。あとディレクトリ構成(treeした結果)も出来れば教えてください。
もしかしてなんですが、
https://github.com/tmpvar/jsdom/blob/master/example/ender/run.js
このへんのサンプルのソースをそのままコピーして実行してるでしょうか?
だとしたら、先頭行の相対パス解決はできてない可能性があります。
require('../../lib/jsdom')を
require('jsdom')
に変えて実行して見て下さい。
実行しましたのはこちらのソースです。
// Count all of the links from the nodejs build page
var jsdom = require("jsdom");
jsdom.env("http://nodejs.org/dist/", [
'http://code.jquery.com/jquery-1.5.min.js'
],
function(errors, window) {
console.log("there have been", window.$("a").length, "nodejs releases!");
});
また、ツリーはnpmのものでよろしかったでしょうか。
Macのnode.jsを利用しておりますので、ユーザーディレクトリの下に
naveにて管理しております。
/Users/saladdays76/nave
├── e...@0.6.1 extraneous
├─┬ exp...@2.5.2 extraneous
│ ├─┬ con...@1.8.3
│ │ └── formi...@1.0.8
│ ├── mi...@1.2.4
│ ├── mkd...@0.0.7
│ └── q...@0.4.0
├─┬ js...@0.2.10 extraneous
│ ├── conte...@0.0.7
│ ├── cs...@0.2.1
│ ├── htmlp...@1.7.3
│ └── req...@2.2.9
├── node...@0.1.9 extraneous
├─┬ node-in...@0.1.10 extraneous
│ └── pape...@0.0.3
└─┬ sock...@0.8.7 extraneous
├── polic...@0.0.4
├── re...@0.6.7
└─┬ socket.i...@0.8.7
├── ugli...@1.0.6
├── websocke...@1.0.0
└── xmlhttp...@1.2.2
ご指摘のとおりjsdomのパスが誤っているものと思うのですが、
npmにてインストールされたjsdomは、いったいどこにパスを通せば良いかもわからず。。
ご教授頂ければ幸いでございます。
モジュールの読み込み順序はドキュメントに「明記」されてます。
http://nodejs.org/docs/v0.6.6/api/modules.html#core_Modules
http://nodejs.jp/nodejs.org_ja/docs/v0.6/api/modules.html#core_Modules (和訳)
優先順位は次の通り。
1)コアモジュール(コンパイル済み)
2)ファイルモジュール(パス指定のあるもの、拡張子によって js かコンパイル済みかを判別)
3)node_modules 配備済みモジュール
nodejs.jp ではオフィシャルが登場してあまり期間をあけずに最新版の和訳を公開してくださってますので、
一読しておくと、より理解を深められますよ。
2011年12月21日23:22 saladdays <salad...@gmail.com>:
> naveにて管理しております。
>
> /Users/saladdays76/nave
nave の場合、
/Users/saladdays76/.nave/installed/0.6.6/lib
のようなパス (の下の node_modules ディレクトリ) にインストール
されませんか?
いずれにせよ、これは -g を付けて npm install したんですよね?
だとすると、サンプルを動かしているディレクトリで
npm ln jsdom
などとする (そのディレクトリに node_modules ディレクトリが
作成されます) か、NODE_PATH 環境変数に
/Users/saladdays76/nave/node_modules
を加える必要があります。
NODE_PATH=/Users/saladdays76/nave/node_modules node xxx.js
Date: Wed, 21 Dec 2011 23:13:21 +0900
From: Yu Uno <salad...@gmail.com>
Subject: Re: [nodejs_jp:503] jsdom実行エラー
--
{
name: "Koichi Kobayashi",
mail: "koi...@improvement.jp",
blog: "http://d.hatena.ne.jp/koichik/",
twitter: "@koichik"
}
saladdaysです。
お返事が遅れ申し訳ございません。
ようやくモジュールの読み込み指定の方法が理解できました。
結果、今回は小林様に頂きました
NODE_PATHにnaveのnode_moduleディレクトリを追加することにより、
無事 require('jsdom') でjsdomモジュールの呼び出しができるようになりました。
ありがとうございました。
未熟者ゆえまたお世話になることもあるかもしれませんが、
引き続き何卒宜しくお願い致します。