我在nodejs中尝试了各种子进程方法,所以为了执行一个linux命令,我尝试了下面的代码,它打印了当前的工作目录:
var execSync = require('child_process').execSync;
function commandOutput(error, stdout, stderr) {
if (stderr !== null) {
console.error(stderr);
}
if (error !== null) {
console.error('execution error: ' + error);
}
if (stdout)console.log(stdout);
console.log("done");
}
var commandToExecute = "pwd";
execSync(commandToExecute, commandOutput);
console.log("executed");
虽然如果我用exec替换execSync,这可以正常工作,但上面的代码(即,用execSync)会给出以下错误:
execSync(commandToExecute, commandOutput);
^
TypeError: undefined is not a function
at Object. (/home/User_Name/fil.js:24:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
为什么会发生这种情况?我应该做些什么改变才能让它工作?
2条答案
按热度按时间l2osamch1#
尝试将节点更新到最新的稳定版本6.10)
您可以通过运行以下命令来执行此操作:
然后,您可以通过运行以下命令来检查版本
fruv7luv2#
您正在向sync函数传递回调。
请尝试使用
exec
而不是execSync
。有关进一步的参考信息:https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback