我正在开发一个基本的Node应用程序,我有需要大部分依赖的app.js,然后还有一个仅需要http
and的模块url
。
但是在另一个模块中,我需要将我的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:应用程序未定义error。
您需要将模块包装在函数中并导出。然后,您可以将您的应用传递到该函数中以在模块中使用。
//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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句