1

我有几个 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();
  }
}
4

3 回答 3

4

文件1.js

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

请注意,您需要返回该函数。

文件2.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)();
于 2012-11-13T19:25:15.357 回答
1

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

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


//file2.js:
var file1 = require('./file1.js');
module.exports = {
    performTest: function () {
        file1.test();
    }
}
于 2012-11-13T19:12:03.940 回答
0

ECMAScript6及以上版本中,您可以通过exportimport关键字来完成。

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

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

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

//otherfile.js

import { myFunc } from 'file1';

myFunc();

如果您想了解更多关于箭头函数的信息

于 2019-04-06T10:01:18.467 回答