如何将库传递给节点中的较低依赖项?
How can I pass a library to a lower dependency in node?
我正在尝试创建一个使用 ORM Bookshelf.js 的库(如果您愿意的话,基本上是 Bookshelf.js 之上的一个包装器)。现在 Bookshelf.js 需要您 运行 安装驱动程序才能连接到项目根目录中的正确数据库(例如:npm install mysql
)。
我自己的图书馆也需要这个,因为 Bookshelf.js 需要它,但它一直说 Error: Cannot find module 'mysql'
这是正常的,因为 Bookshelf 实例在其 node_modules文件夹。
如果我输入结构,它将如下所示:
* New Project
** mysql
** LibThatUsesBookshelf
**** Bookshelf
现在Bookshelf.js可能需要这样的结构:
* New Project
** LibThatUsesBookshelf
**** mysql
**** Bookshelf
有没有办法让书架与显示的第一个结构一起工作?
P.S。我知道解释可能会令人困惑,但这是一个难题,我没有其他解释方式。
让你模块的客户端传入一个实例给bookshelf:
// mysuperfancymodule.js
module.exports = function(bookshelf) {
// do fancy things with the bookshelf instance
}
然后在您的客户端应用程序中:
// some app code:
var mySuperFancyModule = require('mysuperfancymodule'); // assuming it is published to npm
var knex = require('knex')({
// init knex...
});
var bookshelf = require('bookshelf')(knex);
mySuperFancyModule(bookshelf); // init my super fancy module
我正在尝试创建一个使用 ORM Bookshelf.js 的库(如果您愿意的话,基本上是 Bookshelf.js 之上的一个包装器)。现在 Bookshelf.js 需要您 运行 安装驱动程序才能连接到项目根目录中的正确数据库(例如:npm install mysql
)。
我自己的图书馆也需要这个,因为 Bookshelf.js 需要它,但它一直说 Error: Cannot find module 'mysql'
这是正常的,因为 Bookshelf 实例在其 node_modules文件夹。
如果我输入结构,它将如下所示:
* New Project
** mysql
** LibThatUsesBookshelf
**** Bookshelf
现在Bookshelf.js可能需要这样的结构:
* New Project
** LibThatUsesBookshelf
**** mysql
**** Bookshelf
有没有办法让书架与显示的第一个结构一起工作?
P.S。我知道解释可能会令人困惑,但这是一个难题,我没有其他解释方式。
让你模块的客户端传入一个实例给bookshelf:
// mysuperfancymodule.js
module.exports = function(bookshelf) {
// do fancy things with the bookshelf instance
}
然后在您的客户端应用程序中:
// some app code:
var mySuperFancyModule = require('mysuperfancymodule'); // assuming it is published to npm
var knex = require('knex')({
// init knex...
});
var bookshelf = require('bookshelf')(knex);
mySuperFancyModule(bookshelf); // init my super fancy module