How To Require Node Module In Node REPL Without Installing Globally?

node.js

node.js Problem Overview


As per the node js instruction manual, it is highly discouraged to install any node module globally.

I tried a variety of things. I executed the following commands in my home directory, in my git file (with the node_modules) folder, and the actual node_modules folder.

> var express=require('express');
undefined
> var express=require('node_modules/express');
Error: Cannot find module 'node_modules/express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at repl:1:13
    at REPLServer.self.eval (repl.js:110:21)
    at repl.js:249:20
    at REPLServer.self.eval (repl.js:122:7)
    at Interface.<anonymous> (repl.js:239:12)
    at Interface.EventEmitter.emit (events.js:95:17)

Note that in the above, I expected them in my git folder (with node_modules). I found it curious that the line

> var express=require('express');

yielded

undefined

In the home directory, I just get the same "cannot find module" error.

node.js Solutions


Solution 1 - node.js

Your require statement is working fine. Ignore the undefined, that's just the node REPL. The undefined is explained here, and see the comments below for links to additional material about that.

You can verify with:

mkdir /tmp/test-repl
cd /tmp/test-repl
npm install express
node
> var express = require('express');
undefined
> express
//long object which is the express module gets printed

Solution 2 - node.js

Printing undefined is normal behavior for both the browser console and the node repl.

Try typing: express. (tab key) - you should get something like this:

> var express = require('express');
undefined
> express.
express.__defineGetter__      express.__defineSetter__      express.__lookupGetter__      express.__lookupSetter__      express.constructor           express.hasOwnProperty
express.isPrototypeOf         express.propertyIsEnumerable  express.toLocaleString        express.toString              express.valueOf               

express.apply                 express.arguments             express.bind                  express.call                  express.caller                express.constructor
express.length                express.name                  express.toString              

express.Route                 express.Router                express.application           express.arguments             express.basicAuth             express.bodyParser
express.caller                express.compress              express.cookieParser          express.cookieSession         express.createServer          express.csrf
express.directory             express.errorHandler          express.favicon               express.json                  express.length                express.limit
express.logger                express.methodOverride        express.mime                  express.multipart             express.name                  express.prototype
express.query                 express.request               express.response              express.responseTime          express.session               express.static
express.staticCache           express.timeout               express.urlencoded            express.version               express.vhost  

Solution 3 - node.js

Depending on the terminal/shell it may want you to specify the current directory. I am using gitbash at the moment.

 _u = require('./node_modules/underscore/underscore');

When I do this the object is returned.

node repl require example

I am curious if this works for others, it worked for me.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser2316667View Question on Stackoverflow
Solution 1 - node.jsPeter LyonsView Answer on Stackoverflow
Solution 2 - node.jsdc5View Answer on Stackoverflow
Solution 3 - node.jsuser3738936View Answer on Stackoverflow