我正在开发一个基本的 Node 应用程序,我有 app.js 需要我的大部分依赖项,然后我有另一个模块只需要 http
和 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: 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/