Javascript 未定义模块名称-节点js

Javascript 未定义模块名称-节点js,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我正试图让“async”模块(非async/await)在NodeJ上工作,但出现以下错误: ReferenceError:未定义异步 位于D:\project\routes\index.js:58:2 在Layer.handle[作为handle\u请求](D:\project\node\u modules\express\lib\router\Layer.js:82:5) 下一步(D:\project\node\u modules\express\lib\router\route.js:11

我正试图让“
async
”模块(非async/await)在NodeJ上工作,但出现以下错误:

ReferenceError:未定义异步 位于D:\project\routes\index.js:58:2 在Layer.handle[作为handle\u请求](D:\project\node\u modules\express\lib\router\Layer.js:82:5) 下一步(D:\project\node\u modules\express\lib\router\route.js:110:13) 在Route.dispatch(D:\project\node\u modules\express\lib\router\Route.js:91:3) 在Layer.handle[作为handle\u请求](D:\project\node\u modules\express\lib\router\Layer.js:82:5) 位于D:\project\node\u modules\express\lib\router\index.js:267:22 在Function.proto.process_参数处(D:\project\node\u modules\express\lib\router\index.js:321:12) 下一步(D:\project\node\u modules\express\lib\router\index.js:261:10) 位于Function.proto.handle(D:\project\node\u modules\express\lib\router\index.js:166:3) 在路由器上(D:\project\node\u 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");
            }
        });
    }
});
});
/*发布以添加用户服务*/
路由器.post('/register',函数(req,res){
var错误=错误;
var错误=[];
//设置我们的内部DB变量
var db=请求db;
//获取表单值。这些值依赖于“name”属性
var user_email=req.body.useremail;
var user_password=req.body.userpassword;
var user_repeat_password=req.body.repeatpassword;
var密码;
var ip;
异步系列([
函数(回调){
//检查输入的密码是否匹配
如果(用户密码!==用户重复密码){
错误=真;
错误。推送('密码不匹配');
}
如果(用户密码长度<6){
错误=真;
错误。push('密码要短,长度必须至少为6个字符');
}
回调();
},
函数(回调){
//加密密码
var salt=“测试”;
var salt2=“test2”;
加密的_密码=SHA512(SHA512(salt.concat(user_密码,salt2)));
//获取IP
ip=请求ip;
如果(ip==“”){
错误=真;
错误。推送('未找到IP?');
}
//验证电子邮件
功能validateEmail(用户\电子邮件){
变量re=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\)*\w[\w-]{0,66})\.([a-z]{2,6}:(\.[a-z]{2})$/i;
返回重新测试(用户电子邮件);
}
如果(!validateEmail(用户电子邮件)){
错误=真;
错误。推送(“未验证的电子邮件”);
}
否则{
//检查电子邮件是否已经存在
var collection=db.get('users');
collection.find({'email':user_email},函数(err,items){
如果(项目==“”){
console.log(“电子邮件可用”);
}
否则{
错误=真;
错误。推送(“电子邮件已在使用”);
console.log(“电子邮件不可用”);
}
},函数(错误,文档){
//如果失败,则返回错误
res.send(“处理数据时出错,请与网站管理员联系。”);
});
}
回调();
}
],函数(err){
console.log(错误);
//检查是否有错误
如果(错误==true){
log('error=true');
错误。推送(“”);
var error\u string=errors.join(
); res.send(错误字符串); } 否则{ log('error=false'); //设置我们的收藏 var collection=db.get('users'); //向争议裁决委员会提交 收藏。插入({ “电子邮件”:用户的电子邮件, “密码”:加密的密码, “状态”:假, “ip”:ip },函数(错误,文档){ 如果(错误){ //如果失败,则返回错误 res.send(“处理数据时出错,请与网站管理员联系。”); } 否则{ //如果有效,设置标题,使地址栏不会仍然显示/adduser 资源位置(“用户列表”); //并期待成功页面 res.redirect(“用户列表”); } }); } }); });
您需要在要使用异步模块的同一文件中使用该模块

var async = require('async');

async.series(...

此代码是否在同一文件中,
server.js
?需要使用它的模块。否,它在index.js文件中。server.js需要它:var routes=require('./routes/index');