mash180sx さん

本多@hakobera です。

> 取り敢えず、Windows環境で実施してみたのですが(本番ではLinux環境で使う予定)

そもそもパッチに関係なく、本家の node-iconv が Windows で動きませんね。
日本語パッチあてないバージョンを手元の Windows 環境で試してみましたがダメでした。
Node.js v0.6.19 でも、Node.js v0.8.1 でも状況は同じです。

README でも微妙な書かれ方しているので、問題を報告してあげると良いのではないでしょうか。

https://github.com/bnoordhuis/node-iconv/blob/master/README.md
「node-iconv may or may not work on Windows. Please try it and report any 
issues you have.」

他に選択肢がないか探してみて、以下をみつけました。
ただ、こちらは Windows 動きますが、Shift_JIS に対応していないのが残念。
将来的には対応するエンコーディングを増やしたい、ということは書いてあるので、
watch しておくと良いかもしれません。

iconv-lite - Pure JavaScript Character Encoding Conversion
https://github.com/ashtuchkin/iconv-lite/

2012年7月5日木曜日 10時24分48秒 UTC+9 mash180sx:
>
> 取り敢えず、Windows環境で実施してみたのですが(本番ではLinux環境で使う予定)
> 以下の手順中、1~3は実施できたのですが(warninngは大量に発生しています)、
> 4の動作確認にてエラーが出てしまいました(当然、自前のソースでもrequireで問題が発生します)。
> ビルドが出来てもやはりWindowsではnode-iconvは動かないのでしょうか?
> node-gypでのビルドが可能になってWindowsでもやっとiconvが利用できるのかと思ったのですが、
> もし何か打つ手があれば教えていただければと思います(無理なら無理という回答でも構いません)。
>
> >node test.js
>
> node.js:201
>         throw e; // process.nextTick error, or 'error' event on first tick
>               ^
> Error: unknown error
>     at Object..node (module.js:472:11)
>     at Module.load (module.js:348:31)
>     at Function._load (module.js:308:12)
>     at Module.require (module.js:354:17)
>     at require (module.js:370:17)
>     at Object.<anonymous> (・・・\node_modules\node-iconv\test.js:4:9)
>     at Module._compile (module.js:441:26)
>     at Object..js (module.js:459:10)
>     at Module.load (module.js:348:31)
>     at Function._load (module.js:308:12)
>
> 【ビルド環境】
> patch : Cygwin GNU Patch
> VC++ : VisualStudio C++ 2010 Express
> Python : v2.7.2
> node.js : v0.6.17
>
> 2012年7月4日水曜日 18時40分26秒 UTC+9 hakobera:
>>
>> 本多@hakobera です。
>>
>> 本家 node-iconv が gyp でのビルドに対応しているので、
>> そこに patch を当てて、自分でビルドすれば良いのではないでしょうか?
>>
>> 実際に使ったことはないので動作保証はしかねますが、
>> とりあえず以下の方法で Node v0.8.0 でビルドはできました。
>>
>> 1. 本家 node-iconv を clone
>>
>> $ git clone git://github.com/bnoordhuis/node-iconv.git
>>
>> 2. libiconv 1.14 用の日本語パッチをダウンロード
>>
>> http://apolloron.org/software/libiconv-1.14-ja/
>>
>> $ cd node-iconv
>> $ cd deps
>> $ wget 
>> http://apolloron.org/software/libiconv-1.14-ja/libiconv-1.14-ja-1.patch
>> $ cd libiconv
>> $ patch -p1 < ../libiconv-1.14-ja-1.patch
>>
>> 3. 必要に応じて node-gyp をインストールして、ビルドを確認
>>
>> $ cd [node-iconv の root]
>> $ npm install node-gyp -g
>> $ node-gyp configure build
>> $ npm install .
>>
>> 4. 動作確認
>>
>> $ node test.js
>>
>> あとはこれをローカルインストールするなりして使えば良いと思います。
>>
>> せっかくなので、ここまでの作業をしたものを github にあげておきました。
>> 特にメンテナンスする気がないので、消すかもしれませんので、fork するなりして試してみてください。
>>
>> github からの npm モジュールをインストールする方法は、
>> Node 学園 6時限目で Jed さんが紹介していた以下の方法でできます。
>>
>> package.json
>>
>> {
>>   "name": "iconv-test",
>>   "version": "0.1.0",
>>   "dependencies": {
>>     "iconv": "git://github.com/hakobera/node-iconv.git#master"
>>   }
>> }
>>
>> 2012年7月4日 17:43 mash180sx <[email protected]>:
>>
>>> いつもお世話になっております。
>>> 初めて投稿させていただきますが宜しくお願い致します。
>>>
>>> 早速ですが、node.jsにて日本語ページ(Windows-31Jのページ)をスクレイピングをしようとしていて
>>> iconv-jpを使用しています。
>>> 少し前まではnpmで普通にダウンロードして使用出来ていたんですが、
>>> node.jsのバージョンアップに伴なって恐らくnode-wafが使用不可になった関係で
>>> npmをした際に、node-wafでエラーが出るようになってしまいました。
>>> 自分でnode-gypの勉強をして対応できないものかといろいろ試行錯誤してみたのですが
>>> 現時点ではお手上げ状態で、余りに時間が掛かりすぎるのでお助けいただきたく投稿させていただきました。
>>>
>>> 一番良いのは大元のnode-iconvにパッチを充ててもらえれば良いのでしょうが、
>>> libiconvの最新パッチが出ていないようだし、
>>> node-iconvに直接パッチを当てる件のスレが立っているようですが途中で止まってしまっているようです。
>>>
>>> お手数をお掛けしますが、宜しくお願い致します。
>>>
>>
>>

メールによる返信