javascript 未定义模块名称 - 节点 js
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/30482377/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Module name is not defined - node js
提问by user3004798
I'm trying to get the 'async
' module (notasync/await) working on nodejs, but I get the following error:
我正在尝试让 ' async
' 模块(不是async/await)在 nodejs 上工作,但出现以下错误:
ReferenceError: async is not defined at D:\project\routes\index.js:58:2 at Layer.handle [as handle_request] (D:\project\node_modules\express\lib\router\layer.js:82:5) at next (D:\project\node_modules\express\lib\router\route.js:110:13) at Route.dispatch (D:\project\node_modules\express\lib\router\route.js:91:3) at Layer.handle [as handle_request] (D:\project\node_modules\express\lib\router\layer.js:82:5) at D:\project\node_modules\express\lib\router\index.js:267:22 at Function.proto.process_params (D:\project\node_modules\express\lib\router\index.js:321:12) at next (D:\project\node_modules\express\lib\router\index.js:261:10) at Function.proto.handle (D:\project\node_modules\express\lib\router\index.js:166:3) at router (D:\project\node_modules\express\lib\router\index.js:35:12)
ReferenceError: async is not defined at D:\project\routes\index.js:58:2 at 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)
In the server.js
file I added: var async = require('async');
And the code were I use async.series:
在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");
}
});
}
});
});
回答by aludvigsen
You need to require the Async module in the same file you are going to use it in.
您需要在要使用它的同一文件中要求 Async 模块。
var async = require('async');
async.series(...