javascript - node.js 需要文件夹中的所有文件

标签 javascript

我的文件夹中有一个项目,其中包含 .js 文件,每个文件都包含 exports.handler = {...}。 现在在我的 index.js 中我需要它们并像这样使用它们:

const Alexa = require('ask-sdk-core');

const skillBuilder = Alexa.SkillBuilders.custom();

exports.handler = skillBuilder
  .addRequestHandlers(
    require('./handler/Random').handler,
    require('./handler/Repeat').handler,
    require('./handler/LaunchRequest').handler,
    require('./handler/Help').handler,
    require('./handler/Exit').handler,
    require('./handler/SessionEndedRequest').handler
  )
  .lambda()

我计划创建更多这样的处理程序,并且想知道是否有一种方法可以循环“./handler”中的所有文件并将它们全部添加。可以为每个处理程序单独调用 addRequestHandlers,并且顺序无关紧要。

最佳答案

是的,有一种方法可以循环遍历 ./handlers 目录(或任何目录)中的所有文件。这是通过 fs.readdir 完成的功能:

const Alexa = require('ask-sdk-core');
const skillBuilder = Alexa.SkillBuilders.custom();
const fs = require('fs');

var handler = skillBuilder;
var handlerDir = './handlers/';

// Iterate over handlers in that directory
try {
    var files = fs.readdirSync(handlerDir);
    for(var i in files) {
        if(files[i].endsWith('.js')) {
            // This is a JavaScript file
            handler = handler
                .addRequestHandlers(
                    require(handlerDir + files[i]).handler
                );
        }
    };

    exports.handler = handler.lambda();
} catch(err) {
    // Handle errors here
}

关于javascript - node.js 需要文件夹中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56100108/

相关文章:

仅使用 for 循环和条件语句的 Javascript 打印正方形

javascript - 将服务器端渲染添加到使用 create-react-app 创建的现有 React 站点

javascript - 获取数组的非索引属性

javascript - 如何使用 Sequelize - Mocha Node 和 javascript 连接到数据库

javascript - 防止页面重新加载后在复选框上触发更改事件

javascript - 在运行时添加 Knockout 模板会清空 HTML DOM

PHP ajax bug 加载更多

javascript - 如何使用 cordova-plugin-file append 到文件

javascript - 尝试设置字段的值但不起作用

javascript - 如何使用 jquery 一次只选择一个 LI 元素?