模块名称未定义 - 节点js

时间:2015-05-27 12:24:58

标签: javascript node.js asynchronous

我正在尝试在nodejs上运行'async'模块( not async / await),但是我收到以下错误:

  

ReferenceError:未定义async       在D:\ project \ routes \ index.js:58:2       在Layer.handle [as handle_request](D:\ project \ node_modules \ express \ lib \ router \ layer.js:82:5)       在下一个(D:\ project \ node_modules \ express \ lib \ router \ route.js:110:13)       在Route.dispatch(D:\ project \ node_modules \ express \ lib \ router \ route.js:91:3)       在Layer.handle [as handle_request](D:\ project \ node_modules \ express \ lib \ router \ layer.js:82:5)       在D:\ project \ node_modules \ express \ lib \ router \ index.js:267:22       在Function.proto.process_params(D:\ project \ node_modules \ express \ lib \ router \ index.js:321:12)       在下一个(D:\ project \ node_modules \ express \ lib \ router \ index.js:261:10)       在Function.proto.handle(D:\ project \ node_modules \ express \ lib \ router \ index.js:166:3)       在路由器(D:\ project \ node_modules \ express \ lib \ router \ index.js:35:12)

在我添加的server.js文件中:var async = require('async'); 代码是我使用async.series:

/* POST to Add User Service */
router.post('/register', function(req, res) {    
var error = false;
var errors = [];

// Set our internal DB variable
var db = req.db;

// Get our form values. These rely on the "name" attributes
var user_email = req.body.useremail;
var user_password = req.body.userpassword;
var user_repeat_password = req.body.repeatpassword;

var encrypted_password;
var ip;

async.series([
    function(callback){
        // Check if entered passwords matches
        if(user_password !== user_repeat_password){
            error = true;
            errors.push('Password does not match');
        }
        if(user_password.length < 6){
            error = true;
            errors.push('Password to short, must be minimal 6 characters long');
        }
        callback();
    },
    function(callback){
        // Encrypt password
        var salt = "test";
        var salt2 = "test2";
        encrypted_password = SHA512(SHA512(SHA512(salt.concat(user_password,salt2))));

        // Get IP
        ip = req.ip;
        if(ip==""){
            error = true;
            errors.push('No IP found?');
        }

        // Validate email
        function validateEmail(user_email) {
            var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
            return re.test(user_email);
        }
        if (!validateEmail(user_email)) {
            error = true;
            errors.push('Unvalid email');
        }
        else{
            // Check if email already exists
            var collection = db.get('users');
            collection.find({'email':user_email}, function(err, items){
                if(items == ""){
                    console.log('Email available');
                }
                else{
                    error = true;
                    errors.push('Email already in use');
                    console.log('Email UNavailable');
                }
            }, function (err, doc) {
                // If it failed, return error
                res.send("An error occurred while processing the data, please contact the site administrator.");
            });
        }
        callback();
    }
], function(err){

    console.log(error);

    // Check if errors
    if(error == true){
        console.log('error = true');
        errors.push("<a href='/register'>Try Again</a>");
        var error_string = errors.join("<br>");
        res.send(error_string);
    }
    else{
        console.log('error = false');

        // Set our collection
        var collection = db.get('users');

        // Submit to the DB
        collection.insert({
            "email" : user_email,
            "password" : encrypted_password,
            "status" : false,
            "ip" : ip
        }, function (err, doc) {
            if (err) {
                // If it failed, return error
                res.send("An error occurred while processing the data, please contact the site administrator.");
            }
            else {
                // If it worked, set the header so the address bar doesn't still say /adduser
                res.location("userlist");
                // And forward to success page
                res.redirect("userlist");
            }
        });
    }
});
});

1 个答案:

答案 0 :(得分:27)

您需要在要使用它的同一文件中要求Async模块。

var async = require('async');

async.series(...