-1

So, I have serverless project, i would like to run function as below

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

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

I have problem with add "report" folder as module in handler.js. How to add module all file in lambda?

Response: { "errorMessage": "Cannot find module 'report'", "errorType": "Error", "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)" ] }

johndoe
  • 4,387
  • 2
  • 25
  • 40
Yeliz
  • 21
  • 2
  • Response: { "errorMessage": "Cannot find module 'report'", "errorType": "Error", "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)" ] } – Yeliz Apr 12 '18 at 11:25
  • Possible duplicate of [node.js require all files in a folder?](https://stackoverflow.com/questions/5364928/node-js-require-all-files-in-a-folder) – Michał Z. Apr 12 '18 at 11:35

3 Answers3

1

I do that by three steps.

1) add below lines to package.json

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

2) install as npm package

npm install

3) require it as normal node_modules.

const report= require('report');
BMW
  • 42,880
  • 12
  • 99
  • 116
1

Thankyou, solution of problem node js version upgrade. Upgraded to the latest version and solved.

Yeliz
  • 21
  • 2
0

Using FS:

You can import all files as modules with this snippet code:

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 );
  });
})

All modules will be accessible via : AllModuls.get([modulName])

Izio
  • 378
  • 6
  • 15