gpt4 book ai didi

javascript - 如何将 app = express() 传递到另一个模块?

转载 作者:搜寻专家 更新时间:2023-11-01 00:32:14 24 4
gpt4 key购买 nike

我正在开发一个基本的 Node 应用程序,我有 app.js 需要我的大部分依赖项,然后我有另一个模块只需要 httpurl .

但是在这个其他模块中,我需要将我的 express 应用程序传递给它,因为我不想在子模块中再次设置 var app = express()。

您如何将应用传递到我的 get_twitter.js 中?

主 app.js

var express     = require('express');
var app = express();
var hello = require('./custom_hello');
var gettwitter = require('./get_twitter');

hello();

app.get('/', function(request, response) {
response.sendFile(__dirname + "/index.html");
});

app.gettwitter();

app.listen(9000);
console.log('listening on 9000...');

get_twitter 模块:

/* =========================================
GET TWITTER Node module
========================================= */

var http = require('http');
var url = require('url');

app.get('/tweets/:username', function(req, response) {

var username = req.params.username;

options = {
protocol: "http:",
host: "api.twitter.com",
pathname: "/1/statuses/user_timeline.json",
query: { screen_name: username, count: 10 }
}

var twitterUrl = url.format(options);
request(twitterUrl).pipe(response);

});

目前,如果我按原样运行它,app 当然会抛出 ReferenceError: app is not defined 错误

最佳答案

您需要将模块包装在一个函数中并将其导出。然后您可以将您的应用程序传递到函数中以在模块中使用。

//get_twitter.js

function Get_Twitter(app){

var http = require('http');
var url = require('url');

app.get('/tweets/:username', function(req, response) {

var username = req.params.username;

options = {
protocol: "http:",
host: "api.twitter.com",
pathname: "/1/statuses/user_timeline.json",
query: { screen_name: username, count: 10 }
}

var twitterUrl = url.format(options);
request(twitterUrl).pipe(response);

});

}

exports = Get_Twitter;

然后在您的主应用程序中调用它

var Get_Twitter = require("get_twitter")(app);

关于javascript - 如何将 app = express() 传递到另一个模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26740829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com