在node.js中加载并执行外部文件

从另一个节点js文件运行节点js文件是否容易/可能? 例如,我有两个文件test1.js和test2.js。 我想从test2.js执行test1.js文件。

我认为更好的方法来完成你想要做的是做我的其他答案的build议。 但是要按照您的问题build议在命令行上执行命令,您需要使用child_process.exec 。 例如:

 var exec = require('child_process').exec, child; child = exec('node test2.js {{args}}', function (error, stdout, stderr) { console.log('stdout: ' + stdout); console.log('stderr: ' + stderr); if (error !== null) { console.log('exec error: ' + error); } }); 

您只需运行require('test2.js') ,然后在导出的对象上调用一个函数。 从模块的文档 :

节点有一个简单的模块加载系统。 在Node中,文件和模块是一一对应的。 例如,foo.js将模块circle.js加载到相同的目录中。

foo.js的内容:

 var circle = require('./circle.js'); console.log( 'The area of a circle of radius 4 is ' + circle.area(4)); 

circle.js的内容:

 var PI = Math.PI; exports.area = function (r) { return PI * r * r; }; exports.circumference = function (r) { return 2 * PI * r; }; 

circle.js模块导出了函数区()和圆周()。 要导出对象,请添加到特殊导出对象。

请注意,exports是对module.exports的引用,因此仅适用于扩充。 如果您要导出单个项目(如构造函数),则需要直接使用module.exports。

 function MyConstructor (opts) { //... } // BROKEN: Does not modify exports exports = MyConstructor; // exports the constructor properly module.exports = MyConstructor; 

本地模块的variables将是私有的。 在这个例子中,variablesPI对于circle.js是私有的。

模块系统在require(“module”)模块中实现。