I just tried to run one of my plugins in 0.9 beta which is running fine on 0.8 but it fails as it can’t load the bluebird promise module.
< 14:42:48.239 [pimatic] Cannot find module 'bluebird'
< 14:42:48.292 [pimatic] Error: Cannot find module 'bluebird'
< 14:42:48.292 [pimatic]> at Function.Module._resolveFilename (module.js:325:15)
< 14:42:48.292 [pimatic]> at Function.Module._load (module.js:276:25)
< 14:42:48.292 [pimatic]> at Module.require (module.js:353:17)
< 14:42:48.292 [pimatic]> at require (internal/module.js:12:17)
< 14:42:48.292 [pimatic]> at Object.<anonymous> (/Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic-orvibo/orvibo-node.js:27:15)
< 14:42:48.292 [pimatic]> at Module._compile (module.js:409:26)
< 14:42:48.292 [pimatic]> at Object.Module._extensions..js (module.js:416:10)
< 14:42:48.292 [pimatic]> at Module.load (/Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic-mobile-frontend/node_modules/nap/node_modules/coffee-script/lib/coffee-script/register.js:45:36)
< 14:42:48.292 [pimatic]> at Function.Module._load (module.js:300:12)
< 14:42:48.292 [pimatic]> at Module.require (module.js:353:17)
< 14:42:48.292 [pimatic]> at require (internal/module.js:12:17)
< 14:42:48.292 [pimatic]> at module.exports (/Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic-orvibo/orvibo.coffee:30:16)
< 14:42:48.292 [pimatic]> at PluginManager.module.exports.PluginManager.loadPlugin (/Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic/lib/plugins.coffee:86:16)
< 14:42:48.292 [pimatic]> at /Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic/lib/plugins.coffee:462:25
< 14:42:48.292 [pimatic]> at tryCatcher (/Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic/node_modules/bluebird/js/release/util.js:16:23)
< 14:42:48.292 [pimatic]> at Promise.module.exports.Promise._settlePromiseFromHandler (/Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic/node_modules/bluebird/js/release/promise.js:502:31)
< 14:42:48.292 [pimatic]> at Promise.module.exports.Promise._settlePromise (/Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic/node_modules/bluebird/js/release/promise.js:559:18)
< 14:42:48.292 [pimatic]> at Promise.module.exports.Promise._settlePromiseCtx (/Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic/node_modules/bluebird/js/release/promise.js:596:10)
< 14:42:48.292 [pimatic]> at Async._drainQueue (/Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic/node_modules/bluebird/js/release/async.js:143:12)
< 14:42:48.292 [pimatic]> at Async._drainQueues (/Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic/node_modules/bluebird/js/release/async.js:148:10)
< 14:42:48.292 [pimatic]> at Immediate.__dirname.drainQueues [as _onImmediate] (/Users/thex/Dropbox/projects/pimatic/pimatic-beta/node_modules/pimatic/node_modules/bluebird/js/release/async.js:17:14)
< 14:42:48.292 [pimatic]> at processImmediate [as _immediateCallback] (timers.js:383:17)
It gets loaded via Promise = env.require 'bluebird'
just like my netatmo plugin does it which is running fine.
Thus my general question, how should a plugin handle such generic libraries. I don’t want to add it to the npm config, then each plugin would install its own bluebird library…
Ideas? Best practices?