我如何要求在node.js文件夹中的所有文件?

需要像这样的东西:

files.forEach(function (v,k){
  // require routes
  require('./routes/'+v);
}};

当前回答

要求所有文件从路由文件夹和应用作为中间件。不需要外部模块。

// require
const { readdirSync } = require("fs");

// apply as middleware
readdirSync("./routes").map((r) => app.use("/api", require("./routes/" + r)));

其他回答

使用这个函数,你可以要求一个完整的目录。

const GetAllModules = ( dirname ) => {
    if ( dirname ) {
        let dirItems = require( "fs" ).readdirSync( dirname );
        return dirItems.reduce( ( acc, value, index ) => {
            if ( PATH.extname( value ) == ".js" && value.toLowerCase() != "index.js" ) {
                let moduleName = value.replace( /.js/g, '' );
                acc[ moduleName ] = require( `${dirname}/${moduleName}` );
            }
            return acc;
        }, {} );
    }
}

// calling this function.

let dirModules = GetAllModules(__dirname);

我有一个文件夹/字段的文件与单个类每个,例如:

fields/Text.js -> Test class
fields/Checkbox.js -> Checkbox class

把它放到fields/index.js中,导出每个类:

var collectExports, fs, path,
  __hasProp = {}.hasOwnProperty;

fs = require('fs');    
path = require('path');

collectExports = function(file) {
  var func, include, _results;

  if (path.extname(file) === '.js' && file !== 'index.js') {
    include = require('./' + file);
    _results = [];
    for (func in include) {
      if (!__hasProp.call(include, func)) continue;
      _results.push(exports[func] = include[func]);
    }
    return _results;
  }
};

fs.readdirSync('./fields/').forEach(collectExports);

这使得模块的行为更像在Python中:

var text = new Fields.Text()
var checkbox = new Fields.Checkbox()

对于这个确切的用例,我一直在使用的一个模块是require-all。

它递归地要求给定目录及其子目录中的所有文件,只要它们不匹配excludeDirs属性。

它还允许指定文件过滤器以及如何从文件名派生返回散列的键。

可以使用:https://www.npmjs.com/package/require-file-directory

要求所选文件只有名称或全部文件。 不需要绝对路径。 易于理解和使用。

我使用节点模块复制到模块来创建一个文件,以需要我们基于nodejs的系统中的所有文件。

我们的实用程序文件的代码是这样的:

/**
 * Module dependencies.
 */

var copy = require('copy-to');
copy(require('./module1'))
.and(require('./module2'))
.and(require('./module3'))
.to(module.exports);

在所有的文件中,大多数函数都被写成export,如下所示:

exports.function1 = function () { // function contents };
exports.function2 = function () { // function contents };
exports.function3 = function () { // function contents };

所以,然后使用文件中的任何函数,你只需要调用:

var utility = require('./utility');

var response = utility.function2(); // or whatever the name of the function is