公开模块到模块

我有节点应用程序需要获取文件夹的path,并从那里读取所有的文件。

例如

moduleA -server.js -controller --load.js 

在load.js我有方法( loadFolderFiles )应该得到文件path的path,并从中加载所有的文件。

现在从模块BI需要moduleA并添加文件夹path来读取文件

应用程序B的结构如下:

  appB -src --files ---fileA.js ---fileB.js -server.js 

在appB server.js里面,我正在做下面的事情(加载moduleA)

 var moduleA = require('moduleA') moduleA.loadFolderFiles('/appB/src/files') moduleA.start(); 

现在moduleA将开始加载提供的path的文件(我想使用它的glob )。

我的问题是

  1. 我发布moduleA作为npm模块和我的问题我应该如何公开moduleA.loadFolderFiles的API(推荐的方式)?

2.我应该如何提供path(相对/绝对)并从模块appB读取文件?

这是npm中的“moduleA”(用于testing) https://www.npmjs.com/package/samplenodeapp

这是moduleB加载moduleA的代码

  var sample = require('samplenodeapp'); sample.start(); 

我公开的模块a的代码如下

 var express = require('express'); var loadModule = require('./controller/load') var app = express(); function start (){ app.listen(3001, function () { console.log("App is listenting on port 3000"); }) } module.exports = { start:start, loadModule:loadModule }; 

正如你可以看到我从控制器/负载暴露方法如下(为loadFolderFiles提供api,可以吗?

       

网上收集的解决方案 "公开模块到模块"

如果需要设置加载文件夹,我build议将其移动到start参数或模块设置。

 var moduleA = require('moduleA')({ loadFolder: '/path/to/folder' }); // or var moduleA = require('moduleA'); moduleA.start({ loadFolder: '/path/to/folder' }); 

如果您select将其移动到模块设置,则应该从该模块导出function。

 var createLoader = require('./controller/load'); module.exports = function (params) { // params === { loadFolder: '/path/to/folder' } var loadModule = createLoader(params.loadFolder); return { start: start, loadModule: loadModule } };