另一个module.export中的访问函数在一个单独的文件中

时间:2012-11-13 18:49:55

标签: node.js express

我有几个javascript文件包含我的节点应用程序的不同部分。使用下面的逻辑需要它们。我想从file2.js访问一个file1.js中的函数,但到目前为止收效甚微。任何帮助将不胜感激,谢谢。

app.js:这是我启动服务器并包含所有快速路线的文件。

require(path_to_file+'/'+file_name)(app, mongoose_database, config_file);  //Require a bunch fo files here in a loop.

file1.js:这是使用上述代码所需的示例文件。

module.exports = function(app, db, conf){
  function test() {  //Some function in a file being exported.
    console.log("YAY");
  }
}

file2.js:这是使用上面代码所需的另一个文件。我想从这个文件(file2.js)中访问file1.js中的一个函数。

module.exports = function(app, db, conf){
  function performTest() {  //Some function in a file being exported.
    test();
  }
}

3 个答案:

答案 0 :(得分:4)

file1.js

module.exports = function(app, db, conf){
  return function test() {
    console.log("YAY");
  }
}

请注意,您需要返回该功能。

file2.js

module.exports = function(app, db, conf){
  return function performTest() {
    var test = require('./file1')(app, db, conf);
    test();
  }
}

(其他一些文件)

var test = require('./file2')(app, db, conf);
test();

require('./file2')(app, db, conf)();

答案 1 :(得分:1)

您现在在file1中的函数仅限于导出中的函数。相反,您希望导出一个对象,其中每个函数都是该对象的成员。

//file1.js
module.exports = {
    test: function () {
    }
};


//file2.js:
var file1 = require('./file1.js');
module.exports = {
    performTest: function () {
        file1.test();
    }
}

答案 2 :(得分:0)

ECMAScript6及更高版本中,您可以通过exportimport关键字来做到这一点。

首先,在单独的js文件中实现和export一个箭头函数:

//file1.js
export const myFunc = () => {
    console.log("you are in myFunc now");
}

然后import,然后在其他文件中调用它:

//otherfile.js

import { myFunc } from 'file1';

myFunc();

If you want to more about Arrow functions