9

I have 3 node files:

// run.js

require('./configurations/modules');
require('./configurations/application');

// modules.js

var express = module.exports.express = require('express');
var app = module.exports.app = express.createServer();

// app.js

app.configure(...)

Run.js requires both files, modules.js which require a module and creates a variable, and app.js which should use that variable. But I get an error on app.js cause app isn't defined.

Is there a way to make this possible?

2 Answers 2

9

Everything declared in a module is local to that module unless it is exported.

Exported objects from one module can be accessed from other modules that reference it.

$ cat run.js 
require('./configurations/modules');
require('./configurations/application');

$ cat configurations/modules.js 
exports.somevariable = {
  someproperty: 'first property'
};

$ cat configurations/application.js 
var modules = require('./modules');

modules.somevariable.something = 'second property';
console.log(modules.somevariable);

$ node run.js 
{ someproperty: 'first property',
  something: 'second property' }
Sign up to request clarification or add additional context in comments.

Comments

0

It looks like you're defining the variable in modules.js, but trying to reference it in app.js. You'll need to have another require in app.js:

// app.js
var application = require('./path/to/modules'),
    app = application.app;

app.configure(...);

Comments

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.