如何正确访问由node.js应用程序中的express设置的应用程序variables?
我正在构build一个node.js服务器,我的文件夹结构如下所示:
- server.js
- 应用程序/ routes.js
- 应用程序/路由/ users.js
我的问题是,我不知道如何使用users.js文件内的app
variables。 我是否需要并在此文件中再次设置expression式,还是有一个更好/更简单的方法来做到这一点? 这里是我的示例代码(只是最低限度了解我的问题):
server.js
// Include our packages in our main server file var express = require('express'); var stormpath = require('express-stormpath'); var app = express(); // Init Stormpath for user management and authentication app.use(stormpath.init(app)); // Load routes require('./app/routes')(app); // Start the server app.listen(process.env.PORT); // Stormpath will let you know when it's ready to start authenticating users. app.on('stormpath.ready', function () { console.log('Your server is running on port ' + port + '.'); });
应用程序/ routes.js
// Import dependencies const express = require('express'); const stormpath = require('express-stormpath'); // Export the routes for our app to use module.exports = function(app) { // Create API group routes const apiRoutes = express.Router(); // User management: get users, invite users, view user profile var UsersRoute = require('./routes/users'); apiRoutes.get('/memberinfo', stormpath.loginRequired, UsersRoute.memberInfo); // Set url for API group routes app.use('/', apiRoutes); };
应用程序/路由/ users.js
// Protected route test module.exports.memberInfo = function(req, res){ //how do i access the "app" here? res.status(200).send({ user: req.user }); }
在.memberInfo
方法中,您可以使用req.app
来访问与该请求关联的app
对象。
在你没有传递req
对象的情况下,你可以使用这种方式,那么你需要通过调用它的方法来初始化模块,然后将app
对象传递给模块,然后模块可以在本地存储app
对象,可以在需要时使用它。