Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Node.js中使用'require'传递对象和变量`_Javascript_Node.js - Fatal编程技术网

Javascript 在Node.js中使用'require'传递对象和变量`

Javascript 在Node.js中使用'require'传递对象和变量`,javascript,node.js,Javascript,Node.js,我正在将路由方法从app.js移动到单独的文件 我使用(在app.js中)成功地做到了这一点: 我可以看到路由正在完成 我的app.js中有一些变量,比如: -tokensarray -jwtSecretKeystring -jwt加密模块 -User哪个是mongoose模式 我想通过userRoutes.js文件中的路由方法传递它们并使它们可用 我不知道怎么做 另一个问题 我也有一些“助手”类型的方法,我想在不同的“路由”文件中使用 我也不知道如何通过考试 这是我处理“路由”文件的方式: v

我正在将路由方法从
app.js
移动到单独的文件

我使用(在
app.js
中)成功地做到了这一点:

我可以看到路由正在完成

我的
app.js中有一些变量,比如:
-
tokens
array
-
jwtSecretKey
string
-
jwt
加密模块
-
User
哪个是mongoose模式

我想通过
userRoutes.js
文件中的路由方法传递它们并使它们可用

我不知道怎么做

另一个问题

我也有一些“助手”类型的方法,我想在不同的“路由”文件中使用

我也不知道如何通过考试

这是我处理“路由”文件的方式:

var express = require('express');
var router = express.Router();

router.post('/user/login', function (request, response) {
    var email = request.body.email;
    var password = request.body.password;

    User.findOne({ email: email, password: password },
        function (err, user) {
            if (err)
                response.send(err);

            if (user) {
                var expires = new Date();

                expires.setDate((new Date()).getDate() + 5);

                var token = jwt.encode({
                    email: email,
                    expires: expires
                }, jwtTokenSecret);

                tokens.push(token);
                response.send(200, { access_token: token });
            } else {
                response.send(401, { message: "User not found" });

            }
        });
});

module.exports = router;  
谢谢:-)

我不确定你的标题中的“解决”部分与你的问题有什么关系,但我可以回答你在问题中讨论的其他部分

我的app.js中有一些变量。。。我想通过考试,然后 通过userRoutes.js文件中的路由方法使它们可用

与另一个模块共享某些设置的常用方法是在模块构造函数或模块方法中将它们传递给该模块:

var userRoutes = require('./serverRoutes/userRoutes')({
    tokens: tokens, 
    jwtSecretKey: jwtSecretKey, 
    jwt: jwt, 
    User: User
});
然后,在userRoutes模块内:

var express = require('express');
var router = express.Router();
var jwtSecretKey, jwt, User, tokens;

router.post('/user/login', function (request, response) {
    var email = request.body.email;
    var password = request.body.password;

    User.findOne({ email: email, password: password },
        function (err, user) {
            if (err)
                response.send(err);

            if (user) {
                var expires = new Date();

                expires.setDate((new Date()).getDate() + 5);

                var token = jwt.encode({
                    email: email,
                    expires: expires
                }, jwtSecretKey);

                tokens.push(token);
                response.send(200, { access_token: token });
            } else {
                response.send(401, { message: "User not found" });

            }
        });
});

// define module constructor
module.exports = function(options) {
    // save data shared from parent module
    jwtSecretKey = options.jwtSecretKey;
    jwt = options.jwt;
    User = options.User;
    tokens = options.tokens;
    return router;
};  
我还有一些“helper”类型的方法要在中使用 不同的“路由”文件。我也不知道如何通过考试

共享一些常用帮助函数的常用方法是将它们放在自己的模块中,然后您只需将它们放在需要使用它们的任何其他模块中的该模块中。

“另一个问题”。提出一个问题,并将您提出的问题说清楚。这个问题不清楚,主要是因为:
解决
与任何事情都有什么关系?
var express = require('express');
var router = express.Router();
var jwtSecretKey, jwt, User, tokens;

router.post('/user/login', function (request, response) {
    var email = request.body.email;
    var password = request.body.password;

    User.findOne({ email: email, password: password },
        function (err, user) {
            if (err)
                response.send(err);

            if (user) {
                var expires = new Date();

                expires.setDate((new Date()).getDate() + 5);

                var token = jwt.encode({
                    email: email,
                    expires: expires
                }, jwtSecretKey);

                tokens.push(token);
                response.send(200, { access_token: token });
            } else {
                response.send(401, { message: "User not found" });

            }
        });
});

// define module constructor
module.exports = function(options) {
    // save data shared from parent module
    jwtSecretKey = options.jwtSecretKey;
    jwt = options.jwt;
    User = options.User;
    tokens = options.tokens;
    return router;
};