在 php 中调用 node.js (nightmarejs) 脚本
Call node.js (nightmarejs) script in php
我的问题很简单,我从 nodejs/nightmarejs 开始,我需要在我的 php 脚本中调用这个 js 脚本以从中检索答案。
我正在使用 Wamp,我的脚本都在同一个文件夹中:
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 的路径。
如果有人有任何灯,将不胜感激。
非常感谢
要在 Windows 中搜索文件,您可以使用 where 命令:
<?php
exec('where node', $nodePath);
if ($nodePath && $nodePath[0]) {
exec('"' . $nodePath[0] . '" index.js', $jsOutput);
var_dump($jsOutput);
}
else {
echo 'node not found.';
}
在 Linux 下,您可以 locate、which 或 find 命令.
好吧,我想这是一个常见的错误。
我在安装 node.js 后忘记重新启动我的计算机,并且有必要这样做以应用在 windows 环境变量中所做的更改,这样您就可以在命令提示符中调用节点...
我的问题很简单,我从 nodejs/nightmarejs 开始,我需要在我的 php 脚本中调用这个 js 脚本以从中检索答案。
我正在使用 Wamp,我的脚本都在同一个文件夹中:
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 的路径。 如果有人有任何灯,将不胜感激。 非常感谢
要在 Windows 中搜索文件,您可以使用 where 命令:
<?php
exec('where node', $nodePath);
if ($nodePath && $nodePath[0]) {
exec('"' . $nodePath[0] . '" index.js', $jsOutput);
var_dump($jsOutput);
}
else {
echo 'node not found.';
}
在 Linux 下,您可以 locate、which 或 find 命令.
好吧,我想这是一个常见的错误。 我在安装 node.js 后忘记重新启动我的计算机,并且有必要这样做以应用在 windows 环境变量中所做的更改,这样您就可以在命令提示符中调用节点...