Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript Build a Simple Dynamic Site with Node.js Creating a Basic Template Engine in Node.js A Simple Merge Utility

Node.js replace issue

Hi All,

I was wondering if anyone could assist me with this challenge. I believe There is something wrong when I try to 'replace' the placeholder key value with the first_name value going off of this error message 'Object [object Object] has no method 'replace''

index.js
var utilities = require("./utilities");

var mailValues = {};

mailValues.first_name = "Janet";

var emailTemplate = "Hi %first_name%! Thanks for completing this code challenge :)";

var mergedContent = utilities.merge(emailTemplate, mailValues, {encoding: "utf8"});

//mergedContent === "Hi Janet! Thanks for completing this code challenge :)";
utilities.js
function merge(content, values) {
  for (var key in content) {
    //replace all {{key}} with the value from the values object
    values = values.replace("%" + key + "%", content[key]);
  }
  return values;
}


module.exports.merge = merge;

Your looping on the wrong parameter, values contains the dictionary/map and the assignment statement is backwards, i.e. you want to replace the value of contents (not values), and pull the value from the dictionary/map (values not content),

1 Answer

You were a bit close to resolve quizz:

function merge(content, values) {
  for(key in values) {
    content = content.replace("%" + key + "%", values[key]);
  }
  return content;
}


module.exports.merge = merge;

Try to find out why it is.