【问题标题】:How to add folder as module in lambda function?如何在 lambda 函数中将文件夹添加为模块?
【发布时间】:2018-09-22 12:41:46
【问题描述】:

所以,我有无服务器项目,我想运行如下功能

'use strict';
const report= require('./report');

module.exports.startAdMeta = (event, context) => {
  report.init();
  return "success";
}

我在 handler.js 中添加“report”文件夹作为模块时遇到问题。 如何在 lambda 中添加模块所有文件?

响应:{“errorMessage”:“找不到模块'report'”,“errorType”:“错误”,“stackTrace”:[“Function.Module._load(module.js:417:25)”,“ Module.require (module.js:497:17)", "require (internal/module.js:20:19)", "Object. (/var/task/handler.js:2:35)", "模块._compile (module.js:570:32)”、“Object.Module._extensions..js (module.js:579:10)”、“Module.load (module.js:487:32)”、“tryModuleLoad (module.js:446:12)", "Function.Module._load (module.js:438:3)"] }

【问题讨论】:

  • 响应:{“errorMessage”:“找不到模块'report'”,“errorType”:“错误”,“stackTrace”:[“Function.Module._load(module.js:417: 25)”、“Module.require (module.js:497:17)”、“require (internal/module.js:20:19)”、“Object. (/var/task/handler.js: 2:35)”、“Module._compile (module.js:570:32)”、“Object.Module._extensions..js (module.js:579:10)”、“Module.load (module.js: 487:32)”、“tryModuleLoad (module.js:446:12)”、“Function.Module._load (module.js:438:3)”] }

标签: node.js function amazon-web-services aws-lambda serverless


【解决方案1】:

谢谢,解决节点js版本升级问题。升级到最新版本并解决。

【讨论】:

    【解决方案2】:

    我分三步完成。

    1) 将以下行添加到package.json

      "dependencies": {
        "report": "file:./report"
      }
    

    2) 安装为 npm 包

    npm install
    

    3) 像普通的 node_modules 一样需要它。

    const report= require('report');
    

    【讨论】:

      【解决方案3】:

      使用 FS:

      您可以使用此 sn-p 代码将所有文件作为模块导入:

      var allModuls = new Map();
      
      fs.readdir("./commands", (err, files) => {
        files.forEach(file => { // for each file in the directory "commands"
      
          if (file == 'main.js'){return;} //my main.js is inside the folder so I excluded it.
      
          var modulName = file.split(".")[0];
          var importedModul = require("./" + file );
          allModuls.set(modulName, importedModul );
        });
      })
      

      所有模块都可以通过以下方式访问:AllModuls.get([modulName])

      【讨论】:

        猜你喜欢
        • 2023-03-29
        • 2019-04-14
        • 2017-10-05
        • 2018-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-30
        • 1970-01-01
        相关资源
        最近更新 更多