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

标签 javascript node.js express

我正在开发一个基本的 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/

相关文章:

javascript - 为什么我的代码笔没有正确地应用到我的网站上?

javascript - 如何删除 extjs 中的按钮背景?

javascript - 如何在 JSDoc 中记录解构参数?

node.js - npm cors 包不工作

mysql - 如何使用 EJS 将 Node.js 中的下拉值发送到 MySQL 数据库?

javascript - 所有数组元素均未分配给模型

javascript - 有没有办法从 Javascript 中的引用重写构造函数?

javascript - 如何在单个 html 文件中使用 FontAwesome?

javascript - 并非 Meteor 项目私有(private)文件夹中的所有 Assets 都会自动部署到 ".meteor\local\build\programs\server\assets\app"

javascript - Linux 下 node.js C++ 插件中的 undefined symbol ,为什么?