28

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?

3 Answers 3

68
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

Sign up to request clarification or add additional context in comments.

2 Comments

- Cannot find module
@PHPLover check now!
8

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.

5 Comments

would you not need the .js extension?
Is not needed, and is automatically added from require() function during module loading.
gotcha. Then how does this answer differ from what the OP has already tried and does not work? Why would this work instead?
it still can't find the module calling from test.js ?
Removing the ".js" at the end of the file name does not answer the original question about importing a file in a parent directory.
-1
const cheerio = require('../node_modules/cheerio');
const request = require('../node_modules/request-promise');
const vl = require('../node_modules/validator');
const crypto = require('crypto');
const fs = require('fs');

1 Comment

A good answer will always include an explanation why this would solve the issue, so that the OP and any future readers can learn from it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.