Change:
Challenge: this challenge need instructions on how to actually install the specified version? On if you search for a package it will just give you the latest version. you run it will add the package with the caret in front of the version number but the test does not allow for that. Should the test allow for the caret?
If changing the tests to allow does not cause any of the versioning issues mentioned previously, then we should go with that. Otherwise, we could add a note that the camper should use :
Just bringing this back up: Are we changing the tests, or changing the instructions to be explicit about the versioning?
Personally, I'd say both. Show the npm command for how to install a specific package version and make the test ignore/accept the caret.
I like that. This kind of lesson is so short, I also think it would be useful to add the information about . I am going to open this up for general help
Hi, I do exactly like npm install --save-exact helmet and helmet = require('helmet'); but still not pass the challenge, anyone, please help me, thanks
Hey , Without seeing your code, or being able to test your project, it will be difficult to assist. Please make use of the to open a topic, and provide as much detail as possible. It will be easier to assist that way.
my code: var express = require('express'); var app = express(); const helmet = require('helmet'); { "name": "fcc-infosec-challenges", "version": "0.0.1", "description": "fcc backend boilerplate", "main": "", "scripts": { "start": "node " }, "dependencies": { "express": "^4.14.0", "helmet": "3.21.3" }, "keywords": [ "node", "hyperdev", "express", "freecodecamp" ], "license": "MIT" } and the test result: // running tests helmet version 3.21.3 should be in // tests completed Please help me to solve this. thanks
As mentioned, please use for questions that involve debugging challenge or project solutions. Thank you.

Discussion:
All your code for these lessons goes in the `myApp.js` file between the lines of code we have started you off with. Do not change or delete the code we have added for you. <del> Install Helmet version `3.21.3`, then require it. </del> <ins> Install Helmet version `3.21.3`, then require it. You can install a specific version of a package with `npm install --save-exact package@version`, or by adding it to your `package.json` directly. </ins> # --hints--

(getUserInput) => $.get(getUserInput('url') + '/_api/package.json').then( (data) => { <del> var packJson = JSON.parse(data); assert(packJson.dependencies.helmet === '3.21.3'); </del> <ins> const packJson = JSON.parse(data); const helmet = packJson.dependencies.helmet; assert(helmet === '3.21.3' || helmet === '^3.21.3'); </ins> }, (xhr) => { throw new Error(xhr.responseText);

# --instructions-- <del> In this exercise, use `helmet.contentSecurityPolicy()`, and configure it setting the `defaultSrc directive` to `["self"]` (the list of allowed sources must be in an array), in order to trust only your website address by default. Set also the `scriptSrc` directive so that you will allow scripts to be downloaded from your website, and from the domain 'trusted-cdn.com'. </del> <ins> In this exercise, use `helmet.contentSecurityPolicy()`. Configure it by adding a `directives` object. In the object, set the `defaultSrc` to `["'self'"]` (the list of allowed sources must be in an array), in order to trust only your website address by default. Also set the `scriptSrc` directive so that you only allow scripts to be downloaded from your website (`'self'`), and from the domain `'trusted-cdn.com'`. </ins> <del> Hint: in the `self` keyword, the single quotes are part of the keyword itself, so it needs to be enclosed in double quotes to be working. </del> <ins> Hint: in the `'self'` keyword, the single quotes are part of the keyword itself, so it needs to be enclosed in double quotes to be working. </ins> # --hints-- <del> helmet.csp() middleware should be mounted correctly </del> <ins> helmet.contentSecurityPolicy() middleware should be mounted correctly </ins> ```js (getUserInput) =>