EU-EDPS/website-evidence-collector

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type number (55)

gh-giant opened this issue · 0 comments

Hi everyone,

I wanted to output my inspection in a folder named after an ID, but I alwyas got an error: TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type number (55).

That's why I have changed some files and I hope you agree with the changes.

Here is my git diff output.

diff --git a/collector/browser-session.js b/collector/browser-session.js
index 074c554..a87801c 100644
--- a/collector/browser-session.js
+++ b/collector/browser-session.js
@@ -42,7 +42,7 @@ async function createBrowserSession(browser_args, browser_logger) {
     userDataDir: args.browserProfile
       ? args.browserProfile
       : args.output
-      ? path.join(args.output, "browser-profile")
+      ? path.join(String(args.output), "browser-profile")
       : undefined,
     args: [
       `--user-agent=${UserAgent}`,
@@ -142,7 +142,7 @@ async function createBrowserSession(browser_args, browser_logger) {
     har = new PuppeteerHar(page);
 
     await har.start({
-      path: args.output ? path.join(args.output, "requests.har") : undefined,
+      path: args.output ? path.join(String(args.output), "requests.har") : undefined,
     });
 
     async function gotoPage(u) {
@@ -227,16 +227,16 @@ async function createBrowserSession(browser_args, browser_logger) {
       // record screenshots
       try {
         await page.screenshot({
-          path: path.join(args.output, "screenshot-top.png"),
+          path: path.join(String(args.output), "screenshot-top.png"),
         });
         await page.evaluate(() => {
           window.scrollTo(0, document.body.scrollHeight);
         });
         await page.screenshot({
-          path: path.join(args.output, "screenshot-bottom.png"),
+          path: path.join(String(args.output), "screenshot-bottom.png"),
         });
         await page.screenshot({
-          path: path.join(args.output, "screenshot-full.png"),
+          path: path.join(String(args.output), "screenshot-full.png"),
           fullPage: true,
         });
       } catch (error) {
diff --git a/collector/connection.js b/collector/connection.js
index f2421de..a0144dd 100644
--- a/collector/connection.js
+++ b/collector/connection.js
@@ -28,7 +28,7 @@ async function testSSL(uri, args, logger, output) {
     let json_file;
 
     if (args.output) {
-      let output_testssl = path.join(args.output, "testssl");
+      let output_testssl = path.join(String(args.output), "testssl");
       fs.mkdirSync(output_testssl);
 
       json_file = `${output_testssl}/testssl.json`;
diff --git a/collector/io.js b/collector/io.js
index 7a9540f..47e6bb0 100644
--- a/collector/io.js
+++ b/collector/io.js
@@ -2,22 +2,22 @@ const fs = require("fs-extra");
 
 function init(args) {
   // creating the folder structure - io
-  if (args.output) {
-    if (fs.existsSync(args.output)) {
-      if (fs.readdirSync(args.output).length > 0) {
+  if (String(args.output)) {
+    if (fs.existsSync(String(args.output))) {
+      if (fs.readdirSync(String(args.output)).length > 0) {
         if (args.overwrite) {
-          fs.emptyDirSync(args.output);
+          fs.emptyDirSync(String(String(args.output)));
         } else {
           console.error(
             "Error: Output folder or file " +
-              args.output +
+              String(args.output) +
               " is not empty. Delete/empty manually or call with --overwrite."
           );
           process.exit(1);
         }
       }
     } else {
-      fs.mkdirSync(args.output);
+      fs.mkdirSync(String(args.output));
     }
   }
 }
diff --git a/lib/logger.js b/lib/logger.js
index af37335..65ccada 100644
--- a/lib/logger.js
+++ b/lib/logger.js
@@ -58,7 +58,7 @@ const create = function (options, args = {}) {
   if (config.file.enabled) {
     let filename;
     if (args.output) {
-      filename = path.join(args.output, "inspection-log.ndjson");
+      filename = path.join(String(args.output), "inspection-log.ndjson");
     } else {
       filename = tmp.tmpNameSync({ postfix: "-log.ndjson" });
     }
diff --git a/reporter/index.js b/reporter/index.js
index bca28d9..457d18c 100644
--- a/reporter/index.js
+++ b/reporter/index.js
@@ -34,7 +34,7 @@ function reporter(args) {
     let json_dump = JSON.stringify(data, null, 2);
 
     if (c.args.output) {
-      fs.writeFileSync(path.join(c.args.output, filename), json_dump);
+      fs.writeFileSync(path.join(String(c.args.output), filename), json_dump);
     }
 
     if (log && c.args.json) {
@@ -46,7 +46,7 @@ function reporter(args) {
     let yaml_dump = yaml.dump(data, { noRefs: true });
 
     if (c.args.output) {
-      fs.writeFileSync(path.join(c.args.output, filename), yaml_dump);
+      fs.writeFileSync(path.join(String(c.args.output), filename), yaml_dump);
     }
 
     if (log && c.args.yaml) {
@@ -87,7 +87,7 @@ function reporter(args) {
     );
 
     if (c.args.output) {
-      fs.writeFileSync(path.join(c.args.output, filename), html_dump);
+      fs.writeFileSync(path.join(String(c.args.output), filename), html_dump);
     }
 
     if (log && c.args.html) {
@@ -102,9 +102,9 @@ function reporter(args) {
         headless: 'new',
       });
       const pages = await browser.pages();
-      await pages[0].goto("file://" + path.resolve(path.join(c.args.output, htmlfilename)), {waitUntil: 'networkidle0'});
+      await pages[0].goto("file://" + path.resolve(path.join(String(c.args.output), htmlfilename)), {waitUntil: 'networkidle0'});
       await pages[0].pdf({
-        path: path.resolve(path.join(c.args.output, pdffilename)),
+        path: path.resolve(path.join(String(c.args.output), pdffilename)),
         format: 'A4',
         printBackground: true,
         displayHeaderFooter: true,
@@ -181,14 +181,14 @@ function reporter(args) {
           creator: `EDPS Website Evidence Collector v${data.script.version.npm} using NPM html-to-docx`,
         };
         const fileBuffer = await HTMLtoDOCX(html_dump, null, documentOptions, null);
-        fs.writeFileSync(path.join(c.args.output, filename), fileBuffer);
+        fs.writeFileSync(path.join(String(c.args.output), filename), fileBuffer);
       }
     }
   };
 
   c.saveSource = function (source, filename = "source.html") {
     if (c.args.output) {
-      fs.writeFileSync(path.join(c.args.output, filename), source);
+      fs.writeFileSync(path.join(String(c.args.output), filename), source);
     }
   };

I run the following command: docker run --rm -it --cap-add SYS_ADMIN --volume wecDir:/output wec https://www.edps.europa.eu/ --output 55 --overwrite true

I am not sure, if this is a appropriate way to share the changes with you, as I am quite new to git. If you need it in another way, please let me know.