运行 来自 Node.js 的 shell
Running a shell from Node.js
我正在尝试 运行 来自 nodejs 的 shell(scala shell)。基本上,我想要一个交互式 scala shell 运行ning 在后台,我可以向其传递输入并从中获得响应。我查看了 nodejs 文档中的 child 进程,但我无法使其工作。
我试过如下所示的 exec。
var exec = require('child_process').exec;
var child = exec('scala');
child.stdout.on('data', function(data){
console.log('from child', data.toString());
});
child.stdin.on('data', function(data){
console.log('Stdin received', data);
});
child.stderr.on('data', function(data){
console.log('from child error', data.toString());
});
当我 运行 程序时,child 逐个字符地从标准输入(我输入的任何内容)获取输入。我想将字符串发送到 child 并从中得到响应。因此,从 scala shell 传递 "val a = 0;" 之类的 scala 代码将 return "a: Int = 0"。
我尝试了 child 进程的 spawn 函数,但它给了我一个错误。
var spawn = require('child_process').spawn,
child = spawn('scala');
Error: spawn scala ENOENT
at exports._errnoException (util.js:1036:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:359:16)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
at Module.runMain (module.js:592:11)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3
我试过你的代码示例,它对我有用。
var spawn = require('child_process').spawn,
child = spawn('scala');
child.stdout.on('data', function(data){
console.log('from child', data.toString());
});
child.stdin.on('data', function(data){
console.log('Stdin received', data);
});
child.stderr.on('data', function(data){
console.log('from child error', data.toString());
});
.
Welcome to Scala version 2.11.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_05).
Type in expressions to have them evaluated.
Type :help for more information.
错误 ENOENT 表示节点无法找到 Scala。确保 scala 在路径中可用或提供二进制文件的绝对路径。
我正在尝试 运行 来自 nodejs 的 shell(scala shell)。基本上,我想要一个交互式 scala shell 运行ning 在后台,我可以向其传递输入并从中获得响应。我查看了 nodejs 文档中的 child 进程,但我无法使其工作。 我试过如下所示的 exec。
var exec = require('child_process').exec;
var child = exec('scala');
child.stdout.on('data', function(data){
console.log('from child', data.toString());
});
child.stdin.on('data', function(data){
console.log('Stdin received', data);
});
child.stderr.on('data', function(data){
console.log('from child error', data.toString());
});
当我 运行 程序时,child 逐个字符地从标准输入(我输入的任何内容)获取输入。我想将字符串发送到 child 并从中得到响应。因此,从 scala shell 传递 "val a = 0;" 之类的 scala 代码将 return "a: Int = 0"。
我尝试了 child 进程的 spawn 函数,但它给了我一个错误。
var spawn = require('child_process').spawn,
child = spawn('scala');
Error: spawn scala ENOENT
at exports._errnoException (util.js:1036:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:359:16)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
at Module.runMain (module.js:592:11)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3
我试过你的代码示例,它对我有用。
var spawn = require('child_process').spawn,
child = spawn('scala');
child.stdout.on('data', function(data){
console.log('from child', data.toString());
});
child.stdin.on('data', function(data){
console.log('Stdin received', data);
});
child.stderr.on('data', function(data){
console.log('from child error', data.toString());
});
.
Welcome to Scala version 2.11.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_05).
Type in expressions to have them evaluated.
Type :help for more information.
错误 ENOENT 表示节点无法找到 Scala。确保 scala 在路径中可用或提供二进制文件的绝对路径。