I am having issues including files to execute in my NodeJs project.
I have two files in the same directory:
a.js
var test = "Hello World";
and
b.js
require('./a.js');
console.log(test);
I execute b.js with node b.js
and get the error ReferenceError: test is not defined
.
I have looked through the docs http://nodejs.org/api/modules.html#modules_file_modules
What am I missing? Thanks in advance.
Change a.js to export the variable:
exports.test = "Hello World";
and assign the return value of require('./a.js')
to a variable:
var a = require('./a.js');
console.log(a.test);
Another pattern you will often see and probably use is to assign something (an object, function) to the module.exports
object in a.js, like so:
module.exports = { big: "string" };
You are misunderstanding what should be happening. The variables defined in your module are not shared. NodeJS scopes them.
You have to return it with module.exports
.
a.js
module.exports = "Hello World";
b.js
var test = require('./a.js');
console.log(test);
if you want to export the variable in another file.There are two patterns.
One is
a.js
global.test = "Hello World";
//test here is global variable,but it will be polluted
The other is
a.js
module.exports.test = "Hello World";
or exports.test= "Hello World";
b.js
var test = require('./a.js');
//test in b.js can get the test in a.js
console.log(test);