我使用PhantomJS开发一个将在Unix服务器上执行的脚本。
从PhantomJS,我想得到hostname
命令返回的Unix系统的名称。
我这样做
var childProcess = require('child_process')
childProcess.execFile("hostname", [""], null, function (err, stdout, stderr) {
console.log("execFileSTDOUT:", JSON.stringify(stdout))
console.log("execFileSTDERR:", JSON.stringify(stderr))
console.log("execFileERR:", JSON.stringify(err))
})
但没有显示任何内容。
答案 0 :(得分:1)
请记住execFile
是异步的。如果您要退出PhantomJS脚本,则需要在回调中执行此操作。此外,""
不是有效的主机名。您可以使用空参数列表:
var childProcess = require('child_process')
childProcess.execFile("hostname", [], null, function (err, stdout, stderr) {
console.log("execFileSTDOUT:", JSON.stringify(stdout))
console.log("execFileSTDERR:", JSON.stringify(stderr))
console.log("execFileERR:", JSON.stringify(err))
phantom.exit();
})
输出:
execFileSTDOUT: "myhostname\n"
execFileSTDERR: ""
execFileERR: null
使用PhantomJS 1.9.7和2.0.1进行测试。
答案 1 :(得分:0)
丢失第2和第3个参数(你没有发送任何东西,所以没关系)
var childProcess = require('child_process')
childProcess.execFile("hostname", [], {}, function (err, stdout, stderr) {
console.log("execFileSTDOUT:", JSON.stringify(stdout))
console.log("execFileSTDERR:", JSON.stringify(stderr))
console.log("execFileERR:", JSON.stringify(err))
})
// execFileSTDOUT: "YourPuterName\n"