javascript - 使用路由文件中的 Express 和访问模块组织 Node 应用程序

标签 javascript node.js express

所以我使用 npm express 生成了一个基本的应用程序。我得到了以下 app.js 文件,现在我尝试添加更多模块,但我似乎无法在路由文件中访问它们。例如,我添加了模块请求,当我尝试从index.js发出请求时,我收到错误500 ReferenceError:请求未定义我该如何制作它以便我能够访问我从其他路由添加的新模块?

app.js

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var request = require('request');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

/routes/index.js

exports.index = function(req, res){
  request(options, function (error, response, body) {
        //console.log(body);
        if (!error && response.statusCode === 200) {
            res.send('worked');
        }
    });
};

最佳答案

使用将对象传递到您的路线。我就是这样做的。

routes/index.js

var module = null;
exports.setModule = function(mod){
  module = mod;
}
exports.index = function(req, res){
  //You can now use your module here
  res.render('index', { title: 'Express' });
};

app.js (发送fs模块)

var fs = require('fs');
var routes = require('./routes');
routes.setModule(fs)

为什么不简单地在每个文件上请求您需要的模块呢?如果模块是单例的,我认为没有任何问题。

关于javascript - 使用路由文件中的 Express 和访问模块组织 Node 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22776376/

相关文章:

javascript - 将空值转换为 0

javascript - Sublime Text 3 函数助手

node.js - Mongoose 从不连接到 mongodb

node.js - layout.ejs 不适用于 Heroku 中的 NodeJS 应用程序

node.js - 在 nodejs express 框架中的不同端口上运行多个应用程序

javascript - 浏览器中的 API 响应与代码中的响应不同

javascript - 检测手机浏览器名称和版本

javascript - 如何访问另一个组件中定义的 map ?

ajax - Nodejs - 如何终止正在运行的 SQLite 查询

node.js - Express 在 GET 请求上生成并返回二维码