在bucket.js中使用get&set时发生Couchbasenetworking错误

我有这个简单的JS脚本:

var cb = require('couchbase'); var bucket; var connectionSettings = { 'user':'test-bucket', 'password':'test', 'hosts':['localhost:8091'], 'bucket':'test-bucket' }; cb.connect(connectionSettings, function(e, bucket) { if (e) { errorHandler('connect', e); } else { console.log('Connection established!'); bucket.get('testObject', function(e, doc) { if(e) { errorHandler('get', e); } else { console.log(doc); } }); } }); function errorHandler(from, e) { console.log('Function: ' + from); console.log(e.message); console.log(e.stack); } 

在执行它之后,连接正在build立,但是当我试图在这个testing用例中得到ID为“a”的文档时,出现以下错误:

 syd@HP-Notebook:~/Desktop$ node test.js Connection established! Function: get Network error Error: Network error at makeError (/home/syd/node_modules/couchbase/lib/bucket.js:578:18) at getParsedHandler (/home/syd/node_modules/couchbase/lib/bucket.js:625:17) node: ../src/ioplugin.cc:496: virtual int Couchnode::IoOps::updateEvent(lcb_socket_t, void*, short int, void*, void (*)(lcb_socket_t, short int, void*)): Assertion `socket != __null' failed. Aborted (core dumped) 

此外,这里是在bucket.js中发生这些错误的代码片段。

578:

 function makeError(conn, errorCode) { // Early-out for success if (errorCode == 0) { return null; } // Build a standard NodeJS Error object with the passed errorCode var errObj = new Error(conn.strError(errorCode)); // <- 578 error here errObj.code = errorCode; return errObj; } 

625:

 function getParsedHandler(data, errorCode, key, cas, flags, value) { // if it looks like it might be JSON, try to parse it if (/[\{\[]/.test(value)) { try { value = JSON.parse(value); } catch (e) { // console.log("JSON.parse error", e, value) } } var error = makeError(data[1], errorCode); // <- 625 error here data[0](error, value, { id : key, cas: cas, flags : flags }); } 

任何想法为什么发生这种情况? PS我没有问题从PHP挖掘数据。

这个失败的原因和这个问题一样 。 将libcouchbase降级到2.0.7应该可以解决问题。

UPD:在新的couchbase nodejs库版本1.0.0-beta中“修复”。