mongodb-js / mongodb-prebuilt

Install MongoDB prebuilt package using npm https://npmjs.org/package/mongodb-prebuilt
ISC License
56 stars 50 forks source link

BUG: TypeError: bin_path is not a function #30

Closed blacksun1 closed 7 years ago

blacksun1 commented 8 years ago

Hello,

I have the following code:

const MongodbPrebuilt = require("mongodb-prebuilt");

function logs_callback(buffer) {
    console.log("log message:", buffer.toString());
}

MongodbPrebuilt.start_server({
  version: "2.6.8",
  logs_callback: logs_callback,
  args: {
    port: 9999,
    quiet: false,
    verbose: true
  }
}, function(err) {
  if (err) {
    console.log("mongod didnt start:", err);
    return;
  }

  console.log("mongod is started");
});

running on node version v4.4.7 on MacOSX 10.11.6. It is giving me the following error:

> sudo DEBUG='mongodb mongodb-prebuilt' node server.js
  mongodb-prebuilt logpath is +0ms /tmp/mongodb-prebuilt-1471210363058.log
  mongodb-prebuilt bin path: /Users/bruces/Projects/test-mongodb-prebuilt/node_modules/mongodb-prebuilt/dist/2.6.8/bin/ +3ms
  mongodb-prebuilt error from lstat: +2ms { [Error: ENOENT: no such file or directory, lstat '/Users/bruces/Projects/test-mongodb-prebuilt/node_modules/mongodb-prebuilt/dist/2.6.8/bin/']
  errno: -2,
  code: 'ENOENT',
  syscall: 'lstat',
  path: '/Users/bruces/Projects/test-mongodb-prebuilt/node_modules/mongodb-prebuilt/dist/2.6.8/bin/' }
  mongodb-prebuilt version 2.6.8 is not installed +9ms
/Users/bruces/Projects/test-mongodb-prebuilt/node_modules/mongodb-prebuilt/index.js:158
    var bin_path = bin_path(version);
                   ^

TypeError: bin_path is not a function
    at install (/Users/bruces/Projects/test-mongodb-prebuilt/node_modules/mongodb-prebuilt/index.js:158:20)
    at Object.start_server (/Users/bruces/Projects/test-mongodb-prebuilt/node_modules/mongodb-prebuilt/index.js:60:16)
    at Object.<anonymous> (/Users/bruces/Projects/test-mongodb-prebuilt/server.js:7:17)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)
    at node.js:968:3

Thanks in advance,

yunghoy commented 8 years ago

C:\Users!!!!!\Desktop\VMImage\Shared\dl\meta\be\node_modules\mongodb-prebuilt\index.js:158 var bin_path = bin_path(version); ^ TypeError: bin_path is not a function at install (C:\Users!!!!!\Desktop\VMImage\Shared\dl\meta\be\node_modules\mongodb-prebuilt\index.js:158:20) at Object.start_server (C:\Users!!!!!\Desktop\VMImage\Shared\dl\meta\be\node_modules\mongodb-prebuilt\index.js:60:16) at C:\Users!!!!!\Desktop!!!!!\Shared\dl\meta\be\node_modules\mockgoose\Mockgoose.js:144:42 at next (C:\Users!!!!!\Desktop\VMImage\Shared\dl\meta\be\node_modules\rimraf\rimraf.js:74:7) at CB (C:\Users!!!!!\Desktop\VMImage\Shared\dl\meta\be\node_modules\rimraf\rimraf.js:110:9) at FSReqWrap. (C:\Users!!!!!\Desktop\VMImage\Shared\dl\meta\be\node_modules\rimraf\rimraf.js:229:7) at FSReqWrap.oncomplete (C:\Users!!!!!\Desktop\VMImage\Shared\dl\meta\be\node_modules\async-listener\glue.js:188:31)

eschwartz commented 8 years ago

This is invalid javascript

function bin_path() { /*...*/ }

function install(version, callback) {
    var bin_path = bin_path(version);
    /*...*/
}

As soon as you declare var bin_path, the value bin_path is undefined. So this function will always fail.

So why did it ever work? Because mongodb-prebuilt as a postinstall script that manually runs install.js.

You'll only run into this bug:

TL;DR: reinstall mongodb-prebuilt, and you should be fine

winfinit commented 7 years ago

bin_path is now deprecated with latest release.