Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

node.js require from parent folder

I have the following structure:

-- node_modules
-- websites
---- common
------- config.js
---- testing
------- test.js

Inside config I have some variables set, which are being exported using module.export.

I am trying to retrieve those variables when running node test.js from config.js using the following codes:

var configData = require('./common/config.js')
var configData = require('../common/config.js')

None of them work. What can I do to retrieve the data from the other folder?

like image 885
Coder Avatar asked Feb 10 '17 15:02

Coder


People also ask

For what require () is used in Node JS?

In NodeJS, require() is a built-in function to include external modules that exist in separate files. require() statement basically reads a JavaScript file, executes it, and then proceeds to return the export object.

Can I use require and import in node?

Node. js follows the commonJS module system, and it require to include modules that exist in separate files and for that purpose it has methods like “require” and “ES6 import and export” are available in node.

What is require path in node JS?

This function takes a path (in the form of a string) and strips it of duplicate slashes and normalizes directory abbreviations, like '.' for 'this directory' and '..' for 'one level up'. For example: > var path = require('path'); > path.normalize('/a/.///b/d/../c/') '/a/b/c/'

What is __ dirname NodeJS?

You can use __dirname to check on which directories your files live. Create and edit controller.js in the api subdirectory in the src directory: src/api/controller.js. log(__dirname) // "/Users/Sam/dirname-example/src/api" console.


2 Answers

var configData = require('./../common/config.js');
  1. ./ is testing/

  2. ./../ is websites/

  3. ./../common/ is websites/common/

  4. ./../common/config.js is websites/common/config.js

like image 188
ibrahim mahrir Avatar answered Oct 18 '22 02:10

ibrahim mahrir


from test.js:

const configData = require('../common/config');

You can safely omit '.js'.

As documentation say:

File Modules

If the exact filename is not found, then Node.js will attempt to load the required filename with the added extensions: .js, .json, and finally .node.

.js files are interpreted as JavaScript text files, and .json files are parsed as JSON text files. .node files are interpreted as compiled addon modules loaded with dlopen.

A required module prefixed with '/' is an absolute path to the file. For example, require('/home/marco/foo.js') will load the file at /home/marco/foo.js.

A required module prefixed with './' is relative to the file calling require(). That is, circle.js must be in the same directory as foo.js for require('./circle') to find it.

Without a leading '/', './', or '../' to indicate a file, the module must either be a core module or is loaded from a node_modules folder.

If the given path does not exist, require() will throw an Error with its code property set to 'MODULE_NOT_FOUND'.

More info about how require() work here.

like image 20
Dario Avatar answered Oct 18 '22 01:10

Dario