2016-10-07 12 views
0

私の問題はまっすぐで、私はnodejs/nightmarejsから始まり、私はPHPスクリプトでこのjsスクリプトを呼び出して答えを取得する必要があります。私はWAMPをし、私のスクリプトを使用していPHPのnode.js(nightmarejs)スクリプトを呼び出す

は同じフォルダに両方とも:

C:\wamp64\www\nightmare\index.php 
C:\wamp64\www\nightmare\index.js 

index.js:

var Nightmare = require('nightmare'); 
var nightmare = Nightmare({ show: true }) 

nightmare 
    .goto('http://yahoo.com') 
    .type('form[action*="/search"] [name=p]', 'nightmare github') 
    .click('form[action*="/search"] [type=submit]') 
    .wait('#main') 
    .evaluate(function() { 
    return document.querySelector('#main .searchCenterMiddle li a').href 
    }) 
    .end() 
    .then(function (result) { 
    console.log(result) 
    }) 
    .catch(function (error) { 
    console.error('Search failed:', error); 
    }); 

のindex.php:私は「

<?php 

    exec("index.js", $jsOutput); 
    var_dump($jsOutput); 

?> 

私がexec()を使用すると、私はそれが正常に動作するためのコマンドライン全体を与える必要がありますいくつかの他の投稿に見られて、何か:

exec("node index.js", $jsOutput); 

私はnodejsへの全体的な経路を与えなければならないと考えましたか?しかし、私は現在のフォルダからnodejsへのパスを取得する方法が見つかりませんでした。 誰もがライトを持っているなら、それは感謝します。 Linuxでは

<?php 
    exec('where node', $nodePath); 

    if ($nodePath && $nodePath[0]) { 

     exec('"' . $nodePath[0] . '" index.js', $jsOutput); 

     var_dump($jsOutput); 
    } 
    else { 
     echo 'node not found.'; 
    } 

あなたがコマンドを見つけたまたはを見つけるすることができます:あなたはコマンドを使用できるWindowsでファイルを検索する どうもありがとう

答えて

1

+0

ありがとう情報、しかし私の問題は、実際には、ノードのパスを見つけることがずっと簡単でした。私の答えを見てください。 – Alex

0

これはよくある間違いだと思います。 node.jsをインストールした後にコンピュータを再起動するのを忘れていました。これを行うには、Windows環境変数で変更を適用する必要があります。commantプロンプトでノードに呼び出すことができます。

関連する問題