X-Press Publishing
when you open provided zip file, you realize the files are from far 2017, the main reason that
npm install
- fails
because in 2020 most of us are using newer versions of node (my node v. 12.16.3),
and this ol boy runs perfectly on node 9.0.0 from 2017-10-31. so you need to downgrade your node to older version. Thankfully we have nvm
tool for easy switch between versions. In terminal run:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
(but as aware user, always examine .sh files before opening them)
now run, to test if the nvm
was installed
command -v nvm
#expected output: nvm
if command -v nvm
not returning nvm
, edit your ~/.bashrc or ~/.zshrc,
by adding next
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
that should work, if not Iâll leave the article.
in your IDE, open unzipped folder with project, open terminal IDE and in root type:
node -v
will return your current node version
nvm install 9.0.0
will install node 9.0.0 from 2017-10-31
node -v
now you are on 9.0.0
npm i
now you have all the packets with no no errors this time
& no package.JSON edits

youâll take it from here 
9 Likes
Hey, thank you for the guide! Before changing the node version, you can have a look at the modules in package.json and change their version-number to the newest version. The main problem with X-Press seems to be Sqlite3.
1 Like
Downgrading to node v8.11.3 did the trick for me. Thanks for the tip!
1 Like
I wasnât able to ârunâ the wget command in my terminal (neither in MacBookâs bash one nor in VisualStudioCodeâs terminal).
So I found this solution on stackoverflow that worked for me:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
sudo npm install -g n
sudo n 9.0.0
npm install
npm audit fix
npm start
available here: https://stackoverflow.com/questions/47008159/how-to-downgrade-node-version (from Hariharan AR)
1 Like
I âsolvedâ this issue by using a compatible version of sqlite3. At this time (7/2020), my verison of Node is v14.3.0, which is only compatible with sqlite3 v5.0.0, so I ran ânpm install [email protected]â to set it up.
This works and allows you to do the project and pass all the testing, but it does seem these newer versions arenât compatible with the old front end code, as the website itself is completely broken and non-responsive. The backend for this project does work correctly though as you can access the API endpoints and trigger the GET routes directly from a browser. For example, browsing to:
http://localhost:4001/api/series/2/issues
Will display: (from the seeded data)
{âissuesâ:[{âidâ:1,ânameâ:âThe Customizable BashManâ,âissue_numberâ:1,âpublication_dateâ:âJanuary 1, 1990â,âartist_idâ:2,âseries_idâ:2},{âidâ:2,ânameâ:âBashMan Meets ScareCurlâ,âissue_numberâ:2,âpublication_dateâ:âJanuary 8, 1990â,âartist_idâ:2,âseries_idâ:2}]}
Hope Codecademy starts updating their content to resolve these issues.
2 Likes
Hey, I also did this project in June, and I solved the same issue by running the command npm install --unsafe-perm -g sqlite3
then updating package.json dependencies THEN running npm install
to set up the project, but I agree with you @spacetyrant, the websites are completely unresponsive & broken
For anyone else whose tests are all passing but the website is still unresponsive, check out this thread here: https://discuss.codecademy.com/t/x-press-publishing-step-35-issue-with-app/499787/2
The base URL which the front-end Xpress.js file is using for fetch requests is âhttp://localhost:4000/apiâ, so setting the PORT to 4000 in server.js (mine was set at 4001) solved the issue, at least for me. Which is weird because the instructions specifically say we can choose any PORT number we like besides 8081 (although the hint underneath that step does say 4000.) But it wasnât an issue of compatibility.
2 Likes
Within the project files themselves, you can find a copy of the instructions. Within it does specify something about having to use port 4000, which I am sure I did not see on the web.
I lost many hours scratching my head before noticing it by chance. Another codecademy blunder.
1 Like
Rather than downgrade node, try the following:
- In a bash terminal, type
npm outdated
and enter to list deprecated packages
- Then, type
npx npm-check-updates -u
and enter to update all packages
- Finally, type
npm install
to complete the updates and update the package.json file
9 Likes
Thanks. This worked for me.
THANKS!!! It worked for me!
2 Likes
Thanks @chrisandrew_dev for the tips
Thanks, this worked for me. Pretty frustrating that they tell you to choose whatever we want except 8081 but it doesnât work unless itâs 4001.
Thanks again!
excellent mate, thank you
Thank you that helped me!!
I installed nvm and got the command to work in my terminal. However, when I went to install node 9.0.0 for the project it failed. Does anyone know why this might be and what I could do to fix this?