13

phantomjs-nodeを使用してWebページをスクレイプするnodejsスクリプトがあります。ターミナルウィンドウから実行する場合は正常に機能しますが、NodeJSアプリケーションの実行構成を介してWebstorm内から実行する場合は機能しません。

Webstormでエラーを引き起こしている可能性があるのは何ですか?

.bash_profileの内容をコメントアウトした後、ターミナルからスクリプトを実行しようとしましたが、それでも機能します。また、別のサンプルスクリプトで内容を確認したprocess.envところ、Webstormとターミナルで値が完全に異なることがわかりました。

スクリプト:

var phantom = require('phantom');
phantom.create(function(ph) {
    return ph.createPage(function(page) {
        return page.open("http://www.google.com", function(status) {
            console.log("opened google? ", status);
            return page.evaluate((function() {
                return document.title;
            }), function(result) {
                console.log('Page title is ' + result);
                return ph.exit();
            });
        });
    });
});

ターミナル出力(うまく機能します!):

opened google?  success
Page title is Google

Webstormコンソールの出力(失敗):

/usr/local/bin/node phantom.js
phantom stderr: execvp(): No such file or directory


Process finished with exit code 0
4

2 に答える 2

26

WebstormはPATH変数を設定しますが、ターミナルで実行したときにアプリが取得するPATH変数とは異なります。私の解決策、ハック:

  1. REPLnodeに到達するために入力します
  2. 走るprocess.env
  3. PATH値の内容をコピーします
  4. この値を使用するPATHと呼ばれる環境変数をWebstormに追加します。Webstormがアプリに提供するデフォルトのPATH変数を上書きします。

終わり!

于 2012-06-25T06:40:19.943 に答える
1

Macを使用している場合は、http://devnet.jetbrains.net/docs/DOC-1160を参照してください。このドキュメントは元々RubyMine用に作成されましたが、WebStormにも適用できます。

于 2012-06-24T10:55:15.080 に答える