将参数传递给另一个JS文件中的Node.js函数

3
我正在尝试将一个Node.js脚本的函数响应传递给另一个脚本。
这是我正在尝试的内容。 Index.js
var express = require('express');

require('./meter');

var app = express();

app.get('/',function(req,res){
    return;                    //hi function from another file
})

app.listen(3000);
console.log('listening on 3000 port')

meter.js

module.exports = {

    hi: function(req, res) {
        return res.status(200).json({"message" : "Hello V1"});
    }
};

这句话的意思是:“仅仅需要require函数就能完成工作吗?”
提前感谢。

1
是的。但你需要在 meter.js 中导出 hi,并且你需要像对待 express 一样使用它。 - Pratik Gaikwad
谢谢@PratikGaikwad。但我明白你的意思,但不知道如何做到这一点。请问您能否在答案中写一些代码? - Abhishek Parikh
1
请查看下面Nir Levy发布的答案。 - Pratik Gaikwad
2个回答

3
当你使用 require 时,应该将其赋值给一个变量,然后你可以在你的代码中使用它:
var express = require('express');
var meter = require('./meter');  // meter will be an object you can use later on
var app = express();

app.get('/',meter.hi); // you actually don't need another annonimous function, can use hi directly as the callback

app.listen(3000);
console.log('listening on 3000 port')

感谢 @Nir Levy。非常完美地解决了问题。 :) - Abhishek Parikh

2
尼尔·莱维的答案是正确的,但我会尝试为您提供更多关于正在发生的事情的背景信息。
var express = require('express');
// Import the meter export and assign it a variable for reuse.
var meter = require('./meter');
var app = express();
app.listen(3000);
console.log('listening on 3000 port')

根据Nir的回答,处理/的get请求只需使用meter.hi
app.get('/', meter.hi);

在这里发生的事情是JavaScript将所有参数传递给meter.hi方法。在express的情况下,这里会按顺序传递3个参数- requestresponsenext

meter模块中,你只使用了请求(request)和响应(response),这很好,但如果需要其他处理或meter.hi的参数需要变化,你可能需要遵循以下做法。

app.get('/', function( req, res ) {
  // You can process the request here.
  // Eg. authentication
  meter.hi(req, res);
});

在这里,您可以更好地控制传递给模块的参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接