Error: Cannot find module 'jsdom/browser/domtohtml'
node も npm も一般ユーザのホームにインストールした状態で、 npm で jsdom をインストール後、 jsdom/browser/domtohtml を使おうとしたら 上記のエラーが出た。
npm でグローバルインストールすると、 ~/local/node/lib/node_modules にモジュールがインストールされる。 tree コマンドで ~/local/node/lib/node_modules/jsdom のディレクトリ構成の一部を見てみると、以下の感じ。
~/local/node/lib/node_modules/jsdom/ ├── benchmark │ ├── (略) ├── changelog ├── example │ ├── (略) ├── lib │ ├── jsdom │ │ ├── browser │ │ │ ├── domtohtml.js │ │ │ ├── htmlencoding.js │ │ │ ├── htmltodom.js │ │ │ └── index.js │ │ ├── level1 │ │ │ └── core.js │ │ ├── level2 │ │ │ ├── core.js │ │ │ ├── events.js │ │ │ ├── html.js │ │ │ ├── index.js │ │ │ ├── languages │ │ │ │ └── javascript.js │ │ │ └── style.js │ │ ├── level3 │ │ │ ├── core.js │ │ │ ├── events.js │ │ │ ├── html.js │ │ │ ├── index.js │ │ │ ├── ls.js │ │ │ └── xpath.js │ │ └── selectors │ │ ├── index.js │ │ └── sizzle.js │ └── jsdom.js ├── LICENSE.txt ├── node_modules │ ├── (略) ├── package.json ├── README.md ├── status.json └── test ├── (略) ├── LICENSE.txt ├── runner ├── sizzle │ ├── (略)
どうも、 ~/local/node/lib/node_modules/jsdom/lib/ 以下の .js ファイルを読み込んでるみたい。 ところが、 jsdom.js は require('jsdom') とすれば読み込めるのに対し、domtohtml.jsはなぜか require('jsdom/lib/jsdom/browser/domtohtml') としないと読み込めなかった。 環境変数は
NODE_PATH = ~/local/node:~local/node/lib/node_modules、 PATH =~/local/node/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:~/bin
という状態。
うーん・・・。
ちなみに、 NODE_PATHに ~local/node/lib/node_modules/jsdom/lib を追加すると、今度は jsdom.js が見つからなくなるという現象が起こる。
~/.npmrc にはとくにPATHに関する設定はしていない。
うーん・・・。
|