Skip to content

Make it Modular: Issue when using named imports for fs #700

@blairwilcox

Description

@blairwilcox

Hello! I noticed a potential issue in the "Make it Modular" exercise. When importing readdir using a named import like this:

const { readdir }  = require("fs");
const { extname } = require("path");

module.exports = function filterFilesByExtension(directory, extension, callback) {
    function isExtension(file) {
        return extname(file) === "." + extension;
    }
    readdir(directory, (err, files) => {
        if (err) {
            return callback(err);
        }
        const matchingFiles = files.filter(isExtension)
        callback(null, matchingFiles);
    });
}

I get the following error:

 Your additional module file [mymodule.js] does not appear to pass back an
 error received from fs.readdir(). Use the following idiomatic Node.js
 pattern inside your callback to fs.readdir(): if (err) return
 callback(err)

 # FAIL Your solution to MAKE IT MODULAR didn't pass. Try again!

However, if I use default imports like this:

const fs  = require("fs");
const { extname } = require("path");

module.exports = function filterFilesByExtension(directory, extension, callback) {
    function isExtension(file) {
        return extname(file) === "." + extension;
    }
    fs.readdir(directory, (err, files) => {
        if (err) {
            return callback(err);
        }
        const matchingFiles = files.filter(isExtension)
        callback(null, matchingFiles);
    });
}

It verifies correctly. I think this may be due to how you're mocking fs.readdir.

Not sure what the more flexible fix would be, but I'd be happy to help if you point me in the right direction!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions