2

如果尚未启动,我正在尝试从 node.js 启动 couchdb。以下代码适用于基本命令,例如pwd但不适用于couchdb

var sys = require('util')
var exec = require('child_process').exec;
var child;

// executes `pwd`
child = exec("pwd", function (error, stdout, stderr) {
  sys.print('stdout: ' + stdout);
  sys.print('stderr: ' + stderr);
  if (error !== null) {
    console.log('exec error: ' + error);
  }
});

我尝试使用 ' couchdb' & ' /usr/local/bin/couchdb' 作为 exec 的参数。

4

1 回答 1

2

我现在有一个使用 CoffeeScript 的工作示例:

childproc = require "child_process"    
couchdb = childproc.spawn "couchdb"
couchdb.stdout.setEncoding "utf8"
buffer = ""

couchdb.stdout.on "data", (data) ->
  lines = (buffer + data).split(/\r?\n/)
  buffer = lines.pop()
  lines.forEach (line, index) ->
    console.log line

couchdb.stdout.on "end", ->
  if buffer.length > 0
      console.log buffer
      buffer = ""
    console.log 'process ended'

有关 CS、Iced CS 和 JS 中更完整的示例,请参阅我的要点

编辑 这是 Javascript 中的输出:

var buffer, childproc, couchdb;

childproc = require("child_process");

couchdb = childproc.spawn("couchdb");

couchdb.stdout.setEncoding("utf8");

buffer = "";

couchdb.stdout.on("data", function(data) {
  var lines;
  lines = (buffer + data).split(/\r?\n/);
  buffer = lines.pop();
  return lines.forEach(function(line, index) {
    return console.log(line);
  });
});

couchdb.stdout.on("end", function() {
  if (buffer.length > 0) {
    console.log(buffer);
    buffer = "";
  }
return console.log('process ended');
});
于 2012-07-08T21:10:25.413 回答