使用npm脚本创建新用户
问题描述:
我想创建一个用户在我的package.json脚本中使用js文件,但是当我通过npm run create_admin
运行脚本时,用户不会被创建并且不会引发错误。一些快速调试使我相信Account.register
没有被调用。使用npm脚本创建新用户
的package.json脚本 -
"scripts": {
"start": "node bin/www",
"test": "mocha --recursive",
"create_admin": "node scripts/create_admin"}
create_admin.js -
var prompt = require('prompt'),
Account = require('../models/account'),
util = require('../utility/utility');
var schema = {
properties: {
username: {
pattern: /^[a-zA-Z\s\-]+$/,
message: 'Username must contain only letters, spaces, or dashes.',
required: true,
description: 'Enter username'
},
password: {
hidden: true,
required: true,
description: 'Enter password'
},
confirmPassword: {
hidden: true,
required: true,
description: 'Confirm password'
}
}
};
prompt.start();
prompt.get(schema, function(err, result) {
if (result.password === result.confirmPassword) {
var newAccount = {
username: result.username,
isAdmin: true,
regDate: Date.now(),
lastLogin: Date.now()
};
Account.register(new Account(newAccount), result.password, function(err, account) {
if (err) {
console.log('Username already in use. Please try another username');
} else {
console.log('Admin account created');
}
});
} else {
console.log('Error - passwords do not match');
}
});
任何帮助表示赞赏。
答
我的头靠在墙上撞了一会儿,试图解决这个问题后,我发现我忽略了require
我的应用程序。添加固定的问题并调用Account.register
。
更新包括应用程序 -
var app = require('../app'),
prompt = require('prompt'),
Account = require('../models/account'),
util = require('../utility/utility');
var schema = {
properties: {
username: {
pattern: /^[a-zA-Z\s\-]+$/,
message: 'Username must contain only letters, spaces, or dashes.',
required: true,
description: 'Enter username'
},
password: {
hidden: true,
required: true,
description: 'Enter password'
},
confirmPassword: {
hidden: true,
required: true,
description: 'Confirm password'
}
}
};
prompt.start();
prompt.get(schema, function(err, result) {
if (result.password === result.confirmPassword) {
var newAccount = {
username: result.username,
isAdmin: true,
regDate: Date.now(),
lastLogin: Date.now()
};
Account.register(new Account(newAccount), result.password, function(err, account) {
if (err) {
console.log('Username already in use. Please try another username');
} else {
console.log('Admin account created');
}
});
} else {
console.log('Error - passwords do not match');
}
});