Tell us what’s happening:
I am trying to solve the json task where I have to send json response according to an environment variable. I have created an environment variable and imported a dot env file.
Everything seems to be fine but when I press “I have completed this challenge button” it gives error.
// running tests
The response of the endpoint
/json
should change according to the environment variable
MESSAGE_STYLE
// tests completed
The response of the endpoint `/json` should change according to the environment variable `MESSAGE_STYLE`
*********************************************************************************
**Your code so far**
var express = require('express');
var app = express();
require('dotenv').config();
// --> 7) Mount the Logger middleware here
// --> 11) Mount the body-parser middleware here
/** 1) Meet the node console. */
console.log("Hello World");
/** 2) A first working Express Server */
app.get("/a",(req,res)=>{
res.send("Hello Express")
});
/** 3) Serve an HTML file */
absolutePath = __dirname + "/views/index.html";
app.get("/",(req,res)=>{
res.sendFile(absolutePath);
});
/** 4) Serve static assets */
absolutePath = __dirname + "/public"
app.use(express.static(absolutePath));
/** 5) serve JSON on a specific route */
app.get("/json1",(req,res)=>{
res.json({"message":"Hello json"});
});
/** 6) Use the .env file to configure the app */
let response = '' ;
console.log(process.env.MESSAGE_STYLE);
if(process.env.MESSAGE_STYLE==='uppercase'){
// response = "Hello json".toUpperCase();
response = "Hello json".toUpperCase();
}
else{
response = "Hello json";
}
console.log('Bihy',{"style":response})
app.get("/json",(req,res)=>{
res.json({"message": response });
})
/** 7) Root-level Middleware - A logger */
// place it before all the routes !
/** 8) Chaining middleware. A Time server */
/** 9) Get input from client - Route parameters */
/** 10) Get input from client - Query parameters */
// /name?first=<firstname>&last=<lastname>
/** 11) Get ready for POST Requests - the `body-parser` */
// place it before all the routes !
/** 12) Get data form POST */
// This would be part of the basic setup of an Express app
// but to allow FCC to run tests, the server is already active
/** app.listen(process.env.PORT || 3000 ); */
//---------- DO NOT EDIT BELOW THIS LINE --------------------
module.exports = app;
Also, I’ve edited your post for readability. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.
You can also use the “preformatted text” tool in the editor (</>) to add backticks around text.
Thanks for cleaning my post, I am new to this.
When I am running the node server in repl. I am supposed to press challenge complete button on FCC. It is on FCC where I am getting an error.
1 .This is the code I am supposed to run and I will pass the challenge it if the response is correct.
/** 6) Use the .env file to configure the app */
let response = '' ;
console.log(process.env.MESSAGE_STYLE);
if(process.env.MESSAGE_STYLE==='uppercase'){
// response = "Hello json".toUpperCase();
response = "Hello json".toUpperCase();
}
else{
response = "Hello json";
}
console.log('Bihy',{"style":response})
app.get("/json",(req,res)=>{
res.json({"message": response });
})
In a seperate .env file i created this global variable
MESSAGE_STYLE=uppercase
In the if statement above response variable is assigned “HELLO JSON”
if MESSAGE_STYLE has ‘uppercase’ assigned and vice versa.
up till here, everything is working but when I send it as JSON in as a response to get statement, FCC does not consider it correct.
The issue is where you are handling the logic in your code. Currently, response is defined on setup (when the app is defined). This means, if MESSAGE_STYLE changes, response will not, because the code only runs once.
The tests check your app is behaving correctly, by changing MESSAGE_STYLE. However, the response variable does not change, because its logic is set up that way.