FAQ: Introduction to Node.js - The Util Module

This community-built FAQ covers the “The Util Module” exercise from the lesson “Introduction to Node.js”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Learn Node.js

FAQs on the exercise The Util Module

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!
You can also find further discussion and get answers to your questions over in #get-help.

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head to #get-help and #community:tips-and-resources. If you are wanting feedback or inspiration for a project, check out #project.

Looking for motivation to keep learning? Join our wider discussions in #community

Learn more about how to use this guide.

Found a bug? Report it online, or post in #community:Codecademy-Bug-Reporting

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

Hi, I have a question.

In task 4 it says “inside of then(), log to the console”

The ${nickname} is ${mi} miles long!

But doesn’t it have to be: The ${track.nickname} is ${track.mi} miles long!

Thanks for any help

3 Likes

I think you’re right, it should be console.log(The ${trail.nickname} is ${trail.miles} miles long!) since the mi and nickname variables were only defined in the callback function that we’re trying to replace.
Besides, it’s not possible to pass this checkpoint using the variables.

1 Like

This lesson somewhat confused me as to how the final code should look like if we make use of the promisify method. Are the initial function declaration getTrailDistance() (written as it is), the callback function and the promisified function suppose to cohabit together on the same file? Since we need to write const getTrailDistancePromise = util.promisify(getTrailDistance), I’m guessing we do need the initial getTrailDistance() to remain unchanged, but if I try to remove the callback function, I obviously get a reference error because we use callback in getTrailDistance() which is not defined anymore.

I assume that the aim is to only have the promisified function in the file and get rid of the old code, but I don’t see how to do that without getting reference errors. And the getTrailDistance() is referring to the callback which becomes obsolete when we decide to convert the callback to a promisified function, so why would we want to keep the code inside getTrailDistance() as it is?

3 Likes

I figured it out!!!
The instructions were not clear at all.
I had to refer to my notes on Promises from the Intermediate Javascript course.

Basically, the key thing to understand is that nickname and mi are keys inside of the resolved value of the Promise getTrailDistancePromise (which you created in the exercise). Also, mi isn’t really the key, it’s actually called miles.

In order to access this data (the resolved value of the Promise), you have to pass it in to the .then() as a function. This is in the form of .then((resolvedValue) => console.log(resolvedValue));. If you run that line of code, it will print out for you the full data. From there, you can construct the console.log() statement the exercise is asking you to.

This is the correct answer below. Note that you can rename x using any variable name. It basically refers to the resolved value of the promise, and simply passes it along to the success handler function nested inside of .then(). (This is explained in the Intermediate Javascript course).

getTrailDistancePromise('North Country').then((x) => console.log(`The ${x.nickname} is ${x.miles} miles long!`)).catch();
3 Likes

I do not understand how to create a new post, so I put my question as a reply… could somebody explain me which is the advantage of promisify the function? It was working without it. It seems just that we are adding extra useless lines of code. I am super lost with this promise thingy :S

1 Like

Thanks for posting I did the vanilla JavaScript years ago and was really struggling with the explanations on this one!

I was wondering the same. I really don’t understand the purpose of it if we still need to keep the old function with the callback…

Still no answer to this question?

I have just completed this exercise too, and while I understand how the promisfy simplifies the code I cannot figure out how to get it to work by removing the old callback() function. I can remove the function completely, but if I then go to remove the callback(null, foundTrail) or and transform the callback(new Error(‘Trail not found!’)) from the getTrailDistance function the program does not output anything (but also does not display any error messages).

Fairly poorly written excercise considering how much of a mental effort understanding promises vs call back functions can be.

Any moderators / codecademy staff able to clarify here how we can remove the redundant callback function so it is just the promisfy?

1 Like

I believe the exercise keeps the old callback() function in order to validate the output of the exercise. I took some time to realize.

I agree, after "promisifying’ the function getTrailDistance, the old callback() function is not necessary anymore.

getTrailDistancePromise('North Country')
  .then((x) => {
    const mi = x.miles;   
    const nickname = x.nickname;
    console.log(`The ${nickname} is ${mi} miles long!`)
  })
  .catch((error)=>{
    console.log('Trail not found!',error)
  });