Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在模块之间公开模块_Javascript_Node.js_Module_Npm_Fs - Fatal编程技术网

Javascript 在模块之间公开模块

Javascript 在模块之间公开模块,javascript,node.js,module,npm,fs,Javascript,Node.js,Module,Npm,Fs,我有一个节点应用程序,它需要获取文件夹的路径并从那里读取所有文件 例如 moduleA -server.js -controller --load.js 在load.js中,我有一个方法(loadFolderFiles),它应该获得文件的路径 路径并从中加载所有文件 现在从模块B开始,我需要要求模块A并添加文件夹的路径来读取文件 应用程序B的结构如下: appB -src --files ---fileA.js ---fileB.js

我有一个节点应用程序,它需要获取文件夹的路径并从那里读取所有文件

例如

moduleA
 -server.js 
 -controller 
  --load.js
在load.js中,我有一个方法(
loadFolderFiles
),它应该获得文件的路径 路径并从中加载所有文件

现在从模块B开始,我需要要求模块A并添加文件夹的路径来读取文件

应用程序B的结构如下:

 appB
   -src
    --files
      ---fileA.js
      ---fileB.js
   -server.js 
在appB server.js中,我执行以下操作(加载moduleA)

现在moduleA将开始加载所提供路径的文件(我想对其使用
glob

我的问题是:

  • 我将moduleA发布为npm模块,我的问题是我应该如何公开 模块a.loadFolderFiles的API(推荐方式)
  • 2.我应该如何为它提供路径(相对/绝对)并读取文件 来自模块appB

    这是npm中的“模块A”(用于测试)

    这是moduleB加载moduleA的代码

    var moduleA = require('moduleA')
    moduleA.loadFolderFiles('/appB/src/files')
    
    moduleA.start();
    
     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,可以吗?

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

    var moduleA = require('moduleA')({ loadFolder: '/path/to/folder' });
    
    // or
    var moduleA = require('moduleA');
    
    moduleA.start({ loadFolder: '/path/to/folder' });
    
    如果选择将其移动到模块设置,则应从该模块导出函数

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

    在调用
    start
    之前是否需要调用
    loadFolderFiles
    ?@是的loadFolderFiles应该在之前调用:),现在我得到了它…如果我想使用moduleA,我可以这样做:
    var moduleA=require('moduleA');moduleA.start()
    ?@Пааааааааааааааааааааааааа。如果我想在将来加载多个文件夹,那么您建议如何执行?(来自Api prespective)2。建议如何读取给定路径的文件?我一定误解了你的问题。
    loadFolderFiles
    做什么,设置要上载的文件夹?或者可能附加额外的中间件到express app?loadFolderFiles正在获取文件夹的路径(从包装器模块/应用程序,如appB),并可能使用fs或glob…(与中间件无关)加载它,然后您的版本对我来说似乎很完美。不过我会坚持绝对路径,它们更可靠。好的,谢谢你1+,你能提供一个例子,我应该如何在moduleA内部实现这个(你的第一个建议)var moduleA=require('moduleA')({loadFolder:'/path/to/folder'});