在节点v0.11上的OS X上调用dlopen(couchnode 1.2.4)

时间:2014-06-07 07:43:25

标签: couchbase

我使用下面的代码来测试couchbase

 var couchbase = require('couchbase');
 var db = new couchbase.Connection({
     bucket: "default"

 },
 function(err) {
     if (err) throw err;
     db.set('testdoc1', {
         name: 'Frank1'
     }, function(err, result) {
         if (err) throw err;
         db.get('testdoc1', function(err, result) {
             if (err) throw err;
             console.log(result.value);
             // {name: Frank}
         });
     });
 });

但报告

/Users/mymac/node_modules/couchbase/lib/binding.js:17
      throw e;
            ^
Error: dlopen(/Users/mymac/node_modules/couchbase/prebuilt/win/x64/couchbase_impl.node, 1): no suitable image found.  Did find:
    /Users/mymac/node_modules/couchbase/prebuilt/win/x64/couchbase_impl.node: unknown file type, first eight bytes: 0x4D 0x5A 0x90 0x00 0x03 0x00 0x00 0x00
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at bindings (/Users/mymac/node_modules/couchbase/node_modules/bindings/bindings.js:74:15)
    at tryLoadBinding (/Users/mymac/node_modules/couchbase/lib/binding.js:13:31)
    at Object.<anonymous> (/Users/mymacg/node_modules/couchbase/lib/binding.js:31:17)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)

欢迎评论

3 个答案:

答案 0 :(得分:3)

0x4d 0x5a是Windows可执行文件的文件签名,换句话说,您的couchbase节点客户端安装不适用于Mac,适用于Windows。

这似乎也是道路的说法;

prebuilt/win/x64

此问题可能是由于node_modules目录在Windows计算机上检入源控件并在mac上检出而不是使用package.json进行本地安装。

答案 1 :(得分:0)

我能够解决这个问题,在OS X 10.9.5上使用xcode 6.0.1

安装libcouchbase的新副本:

$ brew install libcouchbase

这会将libcouchbase安装到/usr/local/Cellar/libcouchbase/2.4.1(或当前的任何版本)。 接下来通过npm

安装Node-SDK
$ npm install --couchbase-root=/usr/local/Cellar/libcouchbase/2.4.1 couchbase

答案 2 :(得分:0)

/Users/csun/dev/projects/cashier-api/cashier-api-site/node_modules/couchbase/lib/binding.js:17
     throw e;
           ^
Error: dlopen(/Users/csun/dev/projects/cashier-api/cashier-api-site/node_modules/couchbase/prebuilt/win/x64/couchbase_impl.node, 1): no suitable image found.  Did find:
   /Users/csun/dev/projects/cashier-api/cashier-api-site/node_modules/couchbase/prebuilt/win/x64/couchbase_impl.node: unknown file type, first eight bytes: 0x4D 0x5A 0x90 0x00 0x03 0x00 0x00 0x00
   at Error (native)
   at Module.load (module.js:355:32)
   at Function.Module._load (module.js:310:12)
   at Module.require (module.js:365:17)
   at require (module.js:384:17)
   at bindings (/Users/csun/dev/projects/cashier-api/cashier-api-site/node_modules/couchbase/node_modules/bindings/bindings.js:74:15)
   at tryLoadBinding (/Users/csun/dev/projects/cashier-api/cashier-api-site/node_modules/couchbase/lib/binding.js:13:31)
   at Object.<anonymous> (/Users/csun/dev/projects/cashier-api/cashier-api-site/node_modules/couchbase/lib/binding.js:31:17)
   at Module._compile (module.js:460:26)
   at Object.Module._extensions..js (module.js:478:10)

我得到了相同的情况,通过在我的项目中使用节点0.10而不是0.12来解决。这意味着您的问题可以通过更改节点版本或couchbase版本来解决。

我的沙发基地版本是 ├─┬couchbase@1.2.4 │├──bounds@1.0.0