Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

JavaScript npm Basics (retiring) Updating and Uninstalling Packages with npm Updating Packages with npm

Jesse Thompson
Jesse Thompson
10,684 Points

Where should the node_modules & package folder be when uploading an app to a server to be hosted live?

In this tutorial I ended up installing all the stuff at C:\Users\Me but the app file I created is at C:\Users\Me\Downloads\nodejslearn\npmbasics\app.js.

If npmbasics was an app to be uploaded I would have to install everything locally at C:\Users\Me\Downloads\nodejslearn\npmbasics\app.js for it to work with all the dependencies when I upload? So node_modules & package folder there locally?

1 Answer

This looks like Windows and I'm not a Windows guy anymore, but I think the simple answer is node_modules does not get loaded up to a production server and package.json should be in the root of your project.

The reason for this is that node_modules is both dynamic and specific to the environment. When "npm install" is executed in the root of of the app on the production server, your package.json informs npm to create a new node_modules folder (in the root of the app) and the "dependencies" object within package.json informs npm which specific modules and versions to deploy.

I know that heroku (at least in a Mac environment) requires an engines object that looks like this

  "engines": {
    "node": "9.8.0"

that signals npm which version of node to use. Of course that 9.8.0 will be dependent on which version of node you are running on the localhost.

Now, I have just exceeded my knowledge, so I will stop for now. I hope that helps. But be sure you confirm it with a Windows guy.